python - 具有 return_sequence=True 的 LSTM 之后的 Keras Dense 层
问题描述
我正在尝试在 Keras 中重新实现本文1,因为作者使用了 PyTorch 2。这是网络架构: 到目前为止我所做的是:
number_of_output_classes = 1
hidden_size = 100
direc = 2
lstm_layer=Bidirectional(LSTM(hidden_size, dropout=0.2, return_sequences=True))(combined) #shape after this step (None, 200)
#weighted sum and attention should be here
attention = Dense(hidden_size*direc, activation='linear')(lstm_layer) #failed trial
drop_out_layer = Dropout(0.2)(attention)
output_layer=Dense(1,activation='sigmoid')(drop_out_layer) #shape after this step (None, 1)
我想在 LSTM 之后包括注意层和最终的 FF 层,但由于尺寸和 return_sequence=True 选项而遇到错误。
解决方案
这是一个序列分类任务。序列分类是多对一映射,您可以在其中将多个时间步的输入标记为单个类。在这种情况下,输入的形状应为 (batch_size, time_steps, channels),输出的形状应为 (batch_size, channels)。如果return_sequences
LSTM 类的参数为 True,则输出的形状为(batch_size, time_steps, channels)
. 将其馈送到密集层和丢失层不会减少维数。要将维度数减少为两个,您必须将return_sequences
最后一个 LSTM 层的参数设置为True
. 在你的情况下
lstm_layer=Bidirectional(LSTM(hidden_size, dropout=0.2, return_sequences=False))(combined)
推荐阅读
- javascript - 计算点,从点,在给定的角度
- java - 随着运行次数和约束的增加进行排名排列
- c - C 代码的奇怪性能:更多指令比更少指令执行得更快
- java - for 循环帮助和存储表达式结果
- powerbi - 基于所选筛选值的同一表中的行值之间的差异 - Power BI
- graph - 计算连锁反应的次数
- python - Pandas 将 xlsx 转换为 CSV - escapechar 不起作用
- react-native - 由不同组件打开的 React Native 关闭 Modal
- r - 如何在 Rmarkdown 中“装箱”回归模型的“summary()”输出
- python - 如何查找python字典中出现次数最多的元素