lstm的蒙特卡洛复发性辍学

时间:2020-06-09 12:27:07

标签: keras deep-learning lstm dropout

我想按照Gal的建议使用递归丢弃对lstm层实施mc-dropout。这需要在测试时间内使用辍学,在常规辍学(掩盖输出激活)中,我将功能性API用于以下层: intermediate = Dropout(dropout_prob)(inputs, training=True),但我不确定如何使用它代替LSTM的 经常辍学 。如果有人可以帮助我解决这一问题,我会感到很高兴。

1 个答案:

答案 0 :(得分:1)

您可以以相同的方式将MC辍学与recurrent_dropout一起使用。您只需要在功能性API中指定training=True

inp = Input(shape=(10, 1))
x = LSTM(1, recurrent_dropout=0.3)(inp, training=False)
m = Model(inp,x)

X = np.random.uniform(0,1, (1,10,1))

output = []
for i in range(0,100):
    output.append(m.predict(X))

training=False的输出结果始终相同,这意味着MC辍学不适用

inp = Input(shape=(10, 1))
x = LSTM(1, recurrent_dropout=0.3)(inp, training=True)
m = Model(inp,x)

X = np.random.uniform(0,1, (1,10,1))

output = []
for i in range(0,100):
    output.append(m.predict(X))

在第二个示例中,我们设置training = True,可以看到输出元素总是不同的。

最后,可以像一个简单的辍学层一样激活recurrent_dropout