Как применить Variational Dropout к GRU-слоям в Keras? - PullRequest
0 голосов
/ 05 июля 2019

Я использую два двунаправленных слоя 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)
...