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