Как я могу получить активации LSTM в тензорном потоке ⇐ Python
-
Anonymous
Как я могу получить активации LSTM в тензорном потоке
Я хотел бы получить активации трех вентилей обученной ячейки LSTM в TensorFlow для определенного входа и состояния. В TensorFlow отсутствует функциональность, эквивалентная «крючку» PyTorch. Я обучил сеть играть в аркадные игры. Вся сеть работает, поэтому с исходным кодом проблем нет.
Код:
[...] ядро = tf.keras.layers.LSTMCell(512) [...] выход, состояние = ядро (вход, состояние) Я пытался: shape_input_input = tf.shape(вход) shape_input_state = tf.shape(current_state) lstm_layer = ядро lstm_layer_input = tf.keras.Input(shape=shape_input_input) lstm_layer_state = tf.keras.Input(shape=shape_input_state) output_sequences, Final_memory_state, Final_carry_state = lstm_layer(inputs = lstm_layer_input,states = lstm_layer_state) (это не работает) tf.keras.Модель(??)
Есть ли у кого-нибудь идеи о том, как получить активации (а не веса) для данного ввода и состояния? Спасибо!
Я пробовал:
output_sequences, Final_memory_state, Final_carry_state = lstm_layer(input_LSTM_input, input_LSTM_state) input_gate_output = lstm_layer.cell.input_gate ignore_gate_output = lstm_layer.cell.forget_gate output_gate_output = lstm_layer.cell.output_gate active_model = tf.keras.Model(inputs=lstm_layer.input, outputs=[output_sequences, Final_memory_state, Final_carry_state, input_gate_output, ignore_gate_output, cell_gate_output, output_gate_output]) Я обнаружил аналогичный подход для получения активаций в CNN и надеялся, что он будет работать и для ячеек LSTM, но, к сожалению, это не так.
Я хотел бы получить активации трех вентилей обученной ячейки LSTM в TensorFlow для определенного входа и состояния. В TensorFlow отсутствует функциональность, эквивалентная «крючку» PyTorch. Я обучил сеть играть в аркадные игры. Вся сеть работает, поэтому с исходным кодом проблем нет.
Код:
[...] ядро = tf.keras.layers.LSTMCell(512) [...] выход, состояние = ядро (вход, состояние) Я пытался: shape_input_input = tf.shape(вход) shape_input_state = tf.shape(current_state) lstm_layer = ядро lstm_layer_input = tf.keras.Input(shape=shape_input_input) lstm_layer_state = tf.keras.Input(shape=shape_input_state) output_sequences, Final_memory_state, Final_carry_state = lstm_layer(inputs = lstm_layer_input,states = lstm_layer_state) (это не работает) tf.keras.Модель(??)
Есть ли у кого-нибудь идеи о том, как получить активации (а не веса) для данного ввода и состояния? Спасибо!
Я пробовал:
output_sequences, Final_memory_state, Final_carry_state = lstm_layer(input_LSTM_input, input_LSTM_state) input_gate_output = lstm_layer.cell.input_gate ignore_gate_output = lstm_layer.cell.forget_gate output_gate_output = lstm_layer.cell.output_gate active_model = tf.keras.Model(inputs=lstm_layer.input, outputs=[output_sequences, Final_memory_state, Final_carry_state, input_gate_output, ignore_gate_output, cell_gate_output, output_gate_output]) Я обнаружил аналогичный подход для получения активаций в CNN и надеялся, что он будет работать и для ячеек LSTM, но, к сожалению, это не так.
Мобильная версия