Python tf.keras.layers.RNN与tf.keras.layers.stackedncells:Tensorflow 2
我试图在Tensorflow 2.0中实现一个多层RNN模型。同时尝试Python tf.keras.layers.RNN与tf.keras.layers.stackedncells:Tensorflow 2,python,tensorflow,keras,recurrent-neural-network,multi-layer,Python,Tensorflow,Keras,Recurrent Neural Network,Multi Layer,我试图在Tensorflow 2.0中实现一个多层RNN模型。同时尝试tf.keras.layers.stackedncells和tf.keras.layers.RNN会得到相同的结果。有人能帮我理解一下tf.keras.layers.RNN和tf.keras.layers.stackedncells之间的区别吗 # driving parameters sz_batch = 128 sz_latent = 200 sz_sequence = 196 sz_feature = 2 n_units
tf.keras.layers.stackedncells
和tf.keras.layers.RNN
会得到相同的结果。有人能帮我理解一下tf.keras.layers.RNN
和tf.keras.layers.stackedncells
之间的区别吗
# driving parameters
sz_batch = 128
sz_latent = 200
sz_sequence = 196
sz_feature = 2
n_units = 120
n_layers = 3
带有tf.keras.layers.RNN的多层RNN
:
inputs = tf.keras.layers.Input(batch_shape=(sz_batch, sz_sequence, sz_feature))
cells = [tf.keras.layers.GRUCell(n_units) for _ in range(n_layers)]
outputs = tf.keras.layers.RNN(cells, stateful=True, return_sequences=True, return_state=False)(inputs)
outputs = tf.keras.layers.Dense(1)(outputs)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.summary()
返回:
Model: "model_13"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_88 (InputLayer) [(128, 196, 2)] 0
_________________________________________________________________
rnn_61 (RNN) (128, 196, 120) 218880
_________________________________________________________________
dense_19 (Dense) (128, 196, 1) 121
=================================================================
Total params: 219,001
Trainable params: 219,001
Non-trainable params: 0
Model: "model_14"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_89 (InputLayer) [(128, 196, 2)] 0
_________________________________________________________________
rnn_62 (RNN) (128, 196, 120) 218880
_________________________________________________________________
dense_20 (Dense) (128, 196, 1) 121
=================================================================
Total params: 219,001
Trainable params: 219,001
Non-trainable params: 0
带有tf.keras.layers.RNN
和tf.keras.layers.stackedncells
的多层RNN:
inputs = tf.keras.layers.Input(batch_shape=(sz_batch, sz_sequence, sz_feature))
cells = [tf.keras.layers.GRUCell(n_units) for _ in range(n_layers)]
outputs = tf.keras.layers.RNN(tf.keras.layers.StackedRNNCells(cells),
stateful=True,
return_sequences=True,
return_state=False)(inputs)
outputs = tf.keras.layers.Dense(1)(outputs)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.summary()
返回:
Model: "model_13"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_88 (InputLayer) [(128, 196, 2)] 0
_________________________________________________________________
rnn_61 (RNN) (128, 196, 120) 218880
_________________________________________________________________
dense_19 (Dense) (128, 196, 1) 121
=================================================================
Total params: 219,001
Trainable params: 219,001
Non-trainable params: 0
Model: "model_14"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_89 (InputLayer) [(128, 196, 2)] 0
_________________________________________________________________
rnn_62 (RNN) (128, 196, 120) 218880
_________________________________________________________________
dense_20 (Dense) (128, 196, 1) 121
=================================================================
Total params: 219,001
Trainable params: 219,001
Non-trainable params: 0
如果您给tf.keras.layers.RNN一个单元格列表或一个单元格元组,它将使用tf.keras.layers.StackedRNNCells。 这是在一个小时内完成的