Я использую два двунаправленных слоя GRU в функциональной модели Keras. Как я могу реализовать Variational Dropout точно так же, как Гэл и Гахрамани предложили это?
Мне нужно реализовать точный метод вариационного отсева Гала и Гахрамани (https://arxiv.org/pdf/1512.05287.pdf) включены в него). В статье авторы утверждают, что следует применять выпадение ко входам, рекуррентным соединениям и выходам Я использую для слоев. Переменная «dropout» в рекуррентном слое определяет процент выпадения, который применяется к входам, а «recurrent_dropout» определяет pertange, который применяется к рекуррентным соединениям.
Должен ли я разместить выпадающий слой после каждого 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)