使用Kerastuner优化LSTM文本分类模型时出现维度不兼容问题求助
问题排查与解决方案
报错根源
Keras中LSTM层默认return_sequences=False,仅输出2维张量(形状为(批次大小, 隐藏单元数)),而堆叠的中间层LSTM要求输入必须为3维时序张量(形状为(批次大小, 时间步长, 特征数))。你的代码设置了至少2层LSTM,但所有LSTM层都没有开启时序返回参数,第一层LSTM输出2维张量后,第二层LSTM输入维度不匹配,触发报错。
修复步骤
- 修改多层LSTM堆叠逻辑,仅最后一层LSTM保持默认配置,其余层添加
return_sequences=True参数,修改后的循环代码如下:
for i in range(num_hidden_layers): # 非最后一层LSTM返回完整时序序列,输出3维张量适配下一层LSTM输入要求 if i != num_hidden_layers - 1: model.add(tf.keras.layers.LSTM(num_units, return_sequences=True)) else: model.add(tf.keras.layers.LSTM(num_units)) model.add(tf.keras.layers.Dropout(dropout_rate))
- 调整超参数搜索范围,当前
num_hidden_layers的最大值设为100不合理,LSTM堆叠层数超过5层就很容易出现梯度消失问题,且训练成本极高,建议将上限调低到5以内。 - 补全你提供代码末尾CustomTuner实例化缺失的右括号
)。
内容的提问来源于stack exchange,提问作者Nikhil Dixit
相关产品推荐
相关产品推荐

