我已经把这个问题作为一个问题发布在Keras‘Github上,但我认为这个问题可能会影响到更多的观众。
系统信息
描述当前行为
我正在执行来自Seq2Seq 教程的代码。我所做的唯一改变就是将LSTM层替换为CuDNNLSTM。所发生的是,模型对我给出的任何输入都有一个固定的输出。当我运行原始代码时,我会得到合理的结果。
描述了预期的行为
见前一节。
代码以复制问题
取自这里。只需用CuDNNLSTM替换LSTM即可。
任何见解都会受到极大的赞赏。
发布于 2019-07-05 21:13:21
所以这里有两个问题。
使用CuDNNLSTM
和parameter tuning
。
基本上,网络覆盖您的数据集,这导致输出只有一个句子对每个输入。这既不是CuDNNLSTM
的错,也不是LSTM
的错。
首先,
CuDNN
与普通的LSTM
有一些不同的数学方法,使其与Cuda兼容并运行得更快。对于您使用的相同代码,在英语-印地语文件上运行LSTM
需要11秒,而CuDNNLSTM
则需要1秒。
在CuDNNLSTM中,time_major
参数设置为false
。出于这个原因,网络覆盖。你可以检查一下,这里。
你可以清楚地看到,像英欣或英马拉蒂这样的小数据集,val-loss
在30年代之后就会增加。在network loss
减少、val_loss
增加的情况下运行更多的网络是没有意义的。LSTM
的情况也是一样的。
在这里,您需要用于小型数据集的param tuning
。
以下是一些可以帮助您的链接:
https://stackoverflow.com/questions/56801148
复制相似问题