У меня есть старый код из tensorflow, который я хочу использовать для tensorflow2 / tf.keras. Я хотел бы сохранить те же веса LSTM, но не могу понять, как преобразовать формат.
У меня есть старые веса, сохраненные в файле контрольной точки, а также они сохранены в файлах csv.
Мой старый код выглядит примерно так:
input_placeholder = tf.placeholder(tf.float32, [None, None, input_units])
lstm_layers = [tf.nn.rnn_cell.LSTMCell(layer_size), tf.nn.rnn_cell.LSTMCell(layer_size)]
stacked = tf.contrib.rnn.MultiRNNCell(lstm_layers)
features, state = tf.nn.dynamic_rnn(stacked, input_placeholder, dtype=tf.float32)
И мой новый код выглядит примерно так:
input_placeholder = tf.placeholder(tf.float32, [None, None, input_units])
lstm_layers = [tf.keras.layers.LSTMCell(layer_size),tf.keras.layers.LSTMCell(layer_size)]
stacked = tf.keras.layers.StackedRNNCells(lstm_layers)
features = stacked(input_placeholder)
... #later in the code
features.set_weights(previous_weights)
Старое предубеждение похоже соответствует новому предубеждению. Старое ядро, похоже, представляет собой соединение ядра и повторяющегося ядра. Я могу загрузить предыдущие_весы в модель (явно проверил, правильно ли загружены веса), однако тесты, которые у меня не были, дают такой же результат. Копаясь в исходном коде, кажется, что у ядер под капотом другой формат.
Можно ли рассчитать ядро и recurrent_kernel (tf.keras), используя эти старые сохраненные веса ядра?
Ссылки, если они полезны:
https://github.com/tensorflow/tensorflow/blob/r1.13/tensorflow/python/ops/rnn_cell_impl.py
https://github.com/tensorflow/tensorflow/blob/r1.13/tensorflow/python/keras/layers/recurrent.py.