Keras的变分衰减

2024-09-26 18:03:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现一个LSTM神经网络,它基于yaringal和zoubinghahramani的论文https://arxiv.org/pdf/1512.05287.pdf中定义的变分RNN架构,使用Python中的Tensorflow后端Keras实现。在

其基本思想是在每个时间步应用相同的dropout mask,在输入/输出连接和循环连接上都应用,如下图所示:

figure

阅读Keras文档,我发现我们可以使用参数dropout和{}对LSTM单元格应用dropout。我的第一个问题是:

  1. 仅使用这些参数,是否在每个时间步应用相同的dropout mask?如果没有,有没有办法?在

然后,我还看到我们可以在LSTM单元之后创建一个Dropout层,并且使用noise_shape参数,我们可以强制该层在每次应用相同的Dropout掩码。我通过设置noise_shape=(K.shape(x)[0], 1, K.shape(x)[2])来完成这项工作。我的第二个问题是:

  1. 如果放在LSTM层之后,Dropout层是否适用于循环连接?在

综上所述,我觉得第一种方法可以对循环连接应用dropout,但不能在每个时间步应用相同的dropout掩码,而第二种方法则相反。我错了吗?在


Tags: 方法参数pdf时间mask神经网络dropoutkeras

热门问题