我正在研究this模型的Keras实现。我已经整理了一个包含大约500万个长度为35的序列的数据集来训练模型。字典大小为50 000字,Keras中的分类交叉熵实现(基于tf.nn.softmax_cross_entropy_with_logits
)非常慢,一个时期在特斯拉P100 GPU上大约需要12个小时。加速这一过程最明显的方法是在Tensorflow中使用稀疏softmax交叉熵实现。
我基于tutorial为此编写了一个简单的自定义丢失函数。
新的自定义丢失功能确实将训练速度提高了4倍,这太棒了。然而,与使用慢成本函数所采用的相同步骤数相比,损失不会非常缓慢地减少/减少。我能用一些玩具数据重现这个,链接如下。
似乎Keras没有正确计算渐变。我在网上看了看,但似乎无法找到这个恼人问题的原因。有没有人面临类似的问题?