我在功能正常的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)