让我们考虑一个简单的数据集:
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}))
您能否展示如何修改最后一段代码以获得与前两个相同的结果?