可以通过将递归值传递为Keras中的基本LSTM或GRU层的参数来对其进行重复施加。
CuDNNLSTM和CuDNNGRU是与CUDA兼容的LSTM和GRU层。主要优点是它们在训练过程中快10倍。但是,它们缺乏Keras中LSTM或GRU层的某些美感,即可以传递丢失或重复出现的丢失值。
虽然我们可以直接在模型中添加Dropout图层,但似乎无法使用Recurrent Dropout来实现。
然后我的问题如下:如何在Keras中向CuDNNGRU或CuDNNLSTM添加重复辍学?
答案 0 :(得分:2)
我不认为我们可以拥有它,因为它甚至在底层(即cuDNN)中也不受支持。 From François Chollet是Keras的创造者:
在cuDNN RNN ops中未实现经常性辍学。在cuDNN级别。所以我们不能在Keras中使用它。
cuDNN API中的dropout选项不是周期性的dropout(与Keras中的不一样),因此它基本上没有用(常规dropout在RNN上不起作用)。
实际上,在堆叠的RNN中使用此类辍学会破坏培训。
答案 1 :(得分:0)
您可以使用kernel_regularizer和recurrent_regularizer来防止过度拟合,我正在使用L2正则化器,并且效果良好。