如何解决多层LSTM模型中LSTM层的形状
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。会不会导致形状不匹配错误?
解决方法
实际上不,它不会导致它。首先,第二层将不会具有64
的输出形状,而是具有128
的输出形状。这是因为您使用的是Bidirectional
层,它将通过向前和向后的传递进行连接,因此您的输出将为(None,None,64+64=128)
。您可以参考link。
RNN
数据的形状如下(Batch_size,time_steps,number_of_features)
。这意味着当您尝试将具有不同神经元的两层连接时,功能会根据神经元的数量而增加或减少。您可以通过特定的链接获取更多details。
对于您的特定代码,这就是模型摘要的外观。因此,简而言之,他们不会错配。
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None,64) 32000
_________________________________________________________________
bidirectional (Bidirectional (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
_________________________________________________________________
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。