You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras seq2seq模型LSTM维度不匹配 如何调整嵌入层输出形状

错误原因

LSTM层要求输入为3维张量(批量大小, 序列长度, 特征维度),你当前喂给LSTM的是4维张量,多出来的维度基本来自嵌入层的输入或配置错误。

修复步骤

  • 确认输入层形状:编码器、解码器的输入层不需要额外加最后一维,正确写法为
# 编码器输入
encoder_inputs = Input(shape=(None,))
# 解码器输入
decoder_inputs = Input(shape=(None,))

如果错误把输入形状设为(None, 1)或者输入数据本身多了最后一个空维度,会导致嵌入层输出多一维变成4维。

  • 核对嵌入层写法,不要加多余包装:Keras的Embedding层原生支持序列输入,不需要用TimeDistributed包裹,正确写法参考:
# 编码器嵌入层,output_dim可根据需求调整为128、256等值
encoder_emb = Embedding(input_dim=num_encoder_tokens, output_dim=256)(encoder_inputs)
# 解码器嵌入层
decoder_emb = Embedding(input_dim=num_decoder_tokens, output_dim=256)(decoder_inputs)

此时嵌入层输出形状为(批量大小, 序列长度, 嵌入维度),刚好符合LSTM的3维输入要求,可以直接喂给LSTM层。

  • 排查验证:可以在嵌入层调用后增加打印语句确认输出维度:
print(encoder_emb.shape)
# 正常输出应为 (None, None, 256) 三个维度,若出现4个维度则往前排查输入或层配置问题

内容的提问来源于stack exchange,提问作者Masoom Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:06:06