Как заморозить первые 2 уровня LSTM и повторно обучить 3-й уровень LSTM при передаче обучения 3-элементному LSTM - PullRequest
0 голосов
/ 08 мая 2020

Я использую LSTM с 3 ячейками + плотный слой, чтобы попробовать сеть:

lstm_cell_1 = tf.nn.rnn_cell.LSTMCell(num_units=192, name='mylstm1')
lstm_cell_2 = tf.nn.rnn_cell.LSTMCell(num_units=128, name='mylstm2')
lstm_cell_3 = tf.nn.rnn_cell.LSTMCell(num_units=128, name='mylstm3')

rnn_cell = tf.nn.rnn_cell.MultiRNNCell(cells=[lstm_cell_1, lstm_cell_2, lstm_cell_3])

init_s = rnn_cell.zero_state(batch_size=tf.shape(tf_x)[0], dtype=tf.float32)

outputs, final_s = tf.nn.dynamic_rnn(rnn_cell, tf_x, initial_state=init_s, dtype=tf.float32, time_major=False,
                                     scope='myRnn')
tf.add_to_collection('mmyoutputs', outputs)
drop_out = tf.nn.dropout(outputs, 0.5)
tf.add_to_collection('mmydo', drop_out)
outs = tf.matmul(drop_out[:, -1, :],
                 tf.Variable(initial_value=tf.random_uniform(shape=(128, dout))),
                 name="myOutput")
tf.add_to_collection('mmyouts', outs)

И я пытаюсь сохранить гиперпараметры первой ячейки LSTM и использовать обучение с передачей для обучения остальной сети. но метод MultiRNNcell объединяет все три уровня, как мне это сделать?

Любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...