运行 LSTM 模型时,我被这段代码困住了 -
# Create cell state and hidden state variables to maintain the state of the LSTM
c, h = [], []
initial_state = []
for li in range(n_layers):
c.append(tf.Variable(tf.zeros([batch_size, num_nodes[li]]), trainable=False))
h.append(tf.Variable(tf.zeros([batch_size, num_nodes[li]]), trainable=False))
initial_state.append(tf.keras.layers.LSTMStateTuple(c[li], h[li]))
# Do several tensor transformations, because the function dynamic_rnn requires the output to be of
# a specific format. Read more at: https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn
all_inputs = tf.concat([tf.expand_dims(t, 0) for t in train_inputs], axis=0)
# Create LSTM layer
lstm_layer = tf.keras.layers.LSTM(num_nodes[-1], return_sequences=True, return_state=True, dropout=dropout)
# Pass inputs and initial state to the LSTM layer
all_lstm_outputs, final_state, _ = lstm_layer(all_inputs, initial_state=initial_state)
all_outputs = tf.keras.layers.Dense(1)(all_lstm_outputs)
split_outputs = tf.split(all_outputs, num_unrollings, axis=0)```
I got this as the error -
AttributeError:模块“keras.api._v2.keras.layers”没有属性“LSTMStateTuple”
您无法使用
LSTMStateTuple
,因为:
LSTMStateTuple
NOT 位于 tf.keras.layers.LSTM
中,而是位于 compat.v1
中
tf.compat.v1.nn.rnn_cell.LSTMStateTuple
文档链接: https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/rnn_cell/LSTMStateTuple
tf.keras.layers.LSTM 是:
tf.keras.layers.LSTM(
units,
activation='tanh',
recurrent_activation='sigmoid',
use_bias=True,
kernel_initializer='glorot_uniform',
recurrent_initializer='orthogonal',
bias_initializer='zeros',
unit_forget_bias=True,
kernel_regularizer=None,
recurrent_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
recurrent_constraint=None,
bias_constraint=None,
dropout=0.0,
recurrent_dropout=0.0,
return_sequences=False,
return_state=False,
go_backwards=False,
stateful=False,
time_major=False,
unroll=False,
**kwargs
)
文档链接:https://www.tensorflow.org/api_docs/python/tf/keras/layers/LSTM