【问题标题】:monte-carlo recurrent dropout with lstmlstm的蒙特卡洛经常性辍学
【发布时间】:2020-09-28 15:06:06
【问题描述】:

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

【问题讨论】:

    标签: tensorflow keras deep-learning lstm dropout


    【解决方案1】:

    您可以以相同的方式将 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 层一样被激活

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2018-02-10
      • 2014-03-26
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      相关资源
      最近更新 更多