model = tf.keras.Sequential([tf.keras.layers.Embedding(tokenizer.vocab_size, 64),tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64,return_sequences=True))
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])第二层有64个隐藏单元,由于return_sequences=True,它也将输出64个序列。但是如何将其提供给一个32个隐藏单元的LSTM。会不会导致形状不匹配错误?
发布于 2020-08-16 19:09:00
实际上不会,它不会导致它。首先,第二层的输出形状不是64,而是128。这是因为您使用的是Bidirectional层,它将通过向前和向后传递连接在一起,因此您的输出将是(None, None, 64+64=128)。您可以参考link。
RNN数据的整形方式如下所示的(Batch_size, time_steps, number_of_features)。这意味着当你尝试连接两个具有不同神经元的层时,基于neurons.You的数量增加或减少的特征可以跟随特定的链接以获得更多的details。
对于您的特定代码,这是模型摘要的外观。因此,简而言之,他们的答案不会不匹配。
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None, None, 64) 32000
_________________________________________________________________
bidirectional (Bidirectional (None, None, 128) 66048
_________________________________________________________________
bidirectional_1 (Bidirection (None, 64) 41216
_________________________________________________________________
dense_2 (Dense) (None, 64) 4160
_________________________________________________________________
dense_3 (Dense) (None, 1) 65
=================================================================
Total params: 143,489
Trainable params: 143,489
Non-trainable params: 0
_________________________________________________________________https://stackoverflow.com/questions/63435897
复制相似问题