#tensorflow #neural-network #lstm
#tensorflow #нейронная сеть #lstm
Вопрос:
Для реализации многослойной сети LSTM я обычно использую следующий код:
def lstm_cell():
return tf.contrib.rnn.LayerNormBasicLSTMCell(model_settin&s['rnn_size'])
attn_cell = lstm_cell
def attn_cell():
return tf.contrib.rnn.DropoutWrapper(lstm_cell(), output_keep_prob=0.7)
cell = tf.contrib.rnn.MultiRNNCell([attn_cell() for _ in ran&e(num_layers)], state_is_tuple=True)
outputs_, _ = tf.nn.dynamic_rnn(cell, x, dtype=tf.float32)
Но, таким образом, у меня нет доступа к выходам скрытого слоя, если я хочу манипулировать расположением выходов скрытого слоя.
Есть ли какой-либо другой способ создать многослойную сеть LSTM без использования tf.contrib.rnn.MultiRNNCell?
Ответ №1:
Вы можете просто сложить несколько слоев LSTM, например, с помощью модуля Sequential:
model = Sequential()
model.add(layers.LSTM(..., return_sequences = True, input_shape = (...)))
model.add(layers.LSTM(..., return_sequences = True)
...
model.add(layers.LSTM(...))
В этом случае return sequences
ключевое слово имеет решающее значение для промежуточных слоев.