与Keras和LSTM/GRU单元一起使用辍学
在Keras中,您可以像这样指定一个退出层:与Keras和LSTM/GRU单元一起使用辍学,keras,lstm,dropout,Keras,Lstm,Dropout,在Keras中,您可以像这样指定一个退出层: model.add(辍学(0.5)) 但是,对于GRU单元,您可以在构造函数中将辍学指定为参数: model.add(GRU(单位=512, return_sequences=True, 辍学率=0.5, 输入形状=(无,特征大小) 有什么区别?一个比另一个好吗 在其中,它将其添加为一个单独的退出层(请参见“使用LSTM进行序列分类”)重复层反复执行相同的重复操作 在每个时间步中,它需要两个输入: 您的输入(序列的一个步骤) 内部输入(例如,可
model.add(辍学(0.5))
但是,对于GRU单元,您可以在构造函数中将辍学指定为参数:
model.add(GRU(单位=512,
return_sequences=True,
辍学率=0.5,
输入形状=(无,特征大小)
有什么区别?一个比另一个好吗
在其中,它将其添加为一个单独的退出层(请参见“使用LSTM进行序列分类”)重复层反复执行相同的重复操作 在每个时间步中,它需要两个输入:
- 您的输入(序列的一个步骤)
- 内部输入(例如,可以是前一步的状态和输出)
- 一个内核应用于“您的输入”,以在兼容维度中处理和转换它
- 另一个(keras称为递归内核)应用于前一步的输入
- 第一次转换输入时的辍学
- 递归核应用中的一个辍学
,应用于输入的第一次操作退出
,应用于经常性输入的其他操作(以前的输出和/或状态)经常性_辍学
GRUCell
和LSTMCell
中看到此描述
什么是正确的 这对创造力是开放的 您可以使用
退出(…)
层,这不是“错误”,但它也可能会删除“timesteps”!(除非您正确设置了噪波_形
,或使用了空间衰减1d
,目前尚未记录该值)
也许你想要,也许你不想要。如果使用重复层中的参数,则将仅对其他尺寸标注应用辍学,而不会删除单个步骤。这对于重复出现的层来说似乎是健康的,除非您希望您的网络学习如何处理包含间隙的序列(最后一句是补充)
此外,使用dropout参数,您将真正删除内核的一部分,因为操作“在每一步”都会被删除,而使用单独的层将让您的RNN在内部执行未删除的操作,因为您的dropout只会影响最终的输出 谢谢Daniel,你对辍学的解释与这里给出的答案是一致的:是的,显然,设置单元格构造函数意味着我也可以指定反复辍学,所以我想我会将其设置为构造函数的一部分。另外一个问题;有人假设,当我开始做评估和预测时,Keras会自动将辍学概率设置为零?我以前用TensorFlow编码,需要自己指定,但我假设Keras会为我这样做…?是的,Keras在其代码中的某个地方使用了一个条件
K。在训练阶段(表达式表示训练,表达式表示非训练)
。辍学只适用于培训阶段。请参阅Brilliant,非常感谢您的帮助Daniel,非常感谢。如果您将辍学()用于RNN/LSTM/GRU后面的return\u sequences=True
和新的RNN/LSTM/etc.层之前,这与设置下一层的辍学相同。对的