tf.keras.layers.LSTMCell VS tf.compat.v1.nn.dynamic_rnn - PullRequest
0 голосов
/ 25 апреля 2020

Давайте рассмотрим простой набор данных:

X_train = np.ones((2, 5, 4))

Чтобы реализовать простую модель LSTM и выполнить через нее набор данных (без обучения), я могу сделать следующее:

lstm_model = tf.keras.models.Sequential()
lstm_model.add(tf.keras.layers.LSTM(units=16, return_sequences=False, input_shape=X_train.shape[-2:]))

print(lstm_model.predict(X_train))

Это дает тот же результат, что и:

lstm_model = tf.keras.models.Sequential()
lstm_model.add(tf.keras.layers.RNN(tf.keras.layers.LSTMCell(units=16, input_shape=X_train.shape[-2:])))

print(lstm_model.predict(X_train))

Однако я не понимаю, как получить тот же результат, используя более старую версию:

g = tf.Graph()

with g.as_default():
    X = tf.compat.v1.placeholder(tf.float32, shape=[None, 5, 4])
    cell = tf.compat.v1.nn.rnn_cell.LSTMCell(16)
    outputs, state = tf.compat.v1.nn.dynamic_rnn(cell, X, dtype=tf.float32)

with tf.compat.v1.Session(graph=g) as sess:
    print(sess.run(state.h, feed_dict={X: X_train}))

Не могли бы вы показать, как изменить последний блок кода для получения тех же результатов, что и в предыдущих двух?

...