如何在Keras中对GRU图层应用变差辍学?

时间:2019-07-05 15:01:20

标签: keras recurrent-neural-network dropout

我在功能正常的Keras模型中使用了两个双向GRU层。如何以Gal和Gahramani提出的完全相同的方式实施变体辍学?

我需要实现针对Gal和Ghahramani(https://arxiv.org/pdf/1512.05287.pdf)提出的变分丢失的确切方法。作者在论文中指出,应该对rnn层的输入,循环连接和输出应用dropout。我习惯分层。循环层中的变量“ dropout”定义应用于输入的丢失百分比,而“ recurrent_dropout”定义应用于循环连接的正交。 我应该在每个GRU层之后放置一个辍学层吗? 我是否需要指定任何其他参数来实现变差辍学?

我想知道如何也可以对输出应用变差辍学吗?

    model_input = Input(shape=(seq_len, ))
    embedding_a = Embedding(len(port_fwd_dict), 50, input_length=seq_len, mask_zero=True)(model_input)
    gru_a = Bidirectional(GRU(25, dropout=0.2, recurrent_dropout=0.2, return_sequences=True), merge_mode="concat")(embedding_a)
    gru_b = Bidirectional(GRU(25, dropout=0.2, recurrent_dropout=0.2, return_sequences=False), merge_mode="concat")(gru_a)
    dense_layer = Dense(100, activation="linear")(gru_b)
    dropout_c = Dropout(0.2)(dense_layer)
    model_output = Dense(len(port_fwd_dict)-1, activation="softmax")(dropout_c)

0 个答案:

没有答案