tensorflow - 带有lstm的蒙特卡罗经常性辍学

标签 tensorflow keras deep-learning lstm dropout

我想按照 Gal 的建议为 lstm 层实现 mc-dropout使用循环辍学。这需要在测试时使用 dropout,在常规 dropout(屏蔽输出激活)中,我使用具有以下层的功能 API: intermediate = Dropout(dropout_prob)(inputs, Training=True) 但我不确定如何使用它来代替经常性 dropout LSTM 的。如果有人能帮助我解决这个问题,我会很高兴。

最佳答案

您可以以相同的方式将 MC dropout 与 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 dropout 不适用

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 可以像简单的 dropout 层一样被激活

关于tensorflow - 带有lstm的蒙特卡罗经常性辍学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62282580/

相关文章:

Tensorflow - 损失开始很高并且不会减少

python - 如何使用经过训练的 Keras GRU 模型预测新的数据系列?

python - 使用验证回调提前停止

python - 评估模型给出的准确度不等于 sklearn 分类报告准确度

Docker - 如何将新的 python 依赖项添加到现有的 docker 镜像?

machine-learning - Caffe 嵌入层输入

python - 每个时期隐藏层的输出并将其存储在 keras 的列表中?

Python - Tensorflow - LSTM- ValueError : Error when checking model target: expected dense_16 to have shape (None, 100) 但得到了形状为 (16, 2) 的数组

python - 急切模式下的 TFP 精确 GP 回归

python - TensorFlow 中 LSTM 的权重和偏差维度