Как добавить отсев в мою нейросеть тензорного потока с помощью RNNCells? - PullRequest
0 голосов
/ 03 января 2019

У меня есть какая-то нейронная сеть (тензор потока)

    n_steps = 10
    n_inputs = 3
    n_outputs = 1
    n_neurons = 100
    n_layers = 3
    X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])
    y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])

    layers = []
    for i in range(n_layers):
        layers.append(tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu))


    multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)

    rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)

Как это (ниже) правильно? Это работает, но я не уверен;)

training = tf.placeholder_with_default(True,shape=())
X_dropout = tf.layers.dropout(X,dropout_rate,training=training)
rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X_dropout, dtype=tf.float32)

Как добавить в эту нейросеть выпадение тензорного потока?

Спасибо за любые предложения!

1 Ответ

0 голосов
/ 04 января 2019

Ваш код просто выпадает для ввода X, и вы должны использовать tf.contrib.rnn.DropoutWrapper ( ссылка ).

layers = []
for i in range(n_layers):
    layers.append(tf.contrib.rnn.DropoutWrapper(tf.contrib.rnn.BasicRNNCell(num_units=n_neurons
                                                                            , activation=tf.nn.relu)
                                                ,output_keep_prob=1-dropout_rate))
...