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

多模态seq2seq组装时报Could not compute output KerasTensor错误如何解决?

错误诱因

  • 解码器输入定义违规:Keras Functional API要求模型输入必须为扁平化的张量列表,你在构建解码器时使用了嵌套列表[decoder_inputs, [state_inputs1,state_inputs2]]作为输入,导致Keras无法正确追踪张量的计算路径。
  • 解码器调用方式错误:调用decoder时你将decoder_target和编码器输出作为两个独立的位置参数传入,而Keras层的__call__方法第一个参数接收所有输入张量的集合,后续位置参数为training、mask等控制参数,参数匹配错误导致模型计算输出时找不到对应张量,最终触发断言错误。

修复方案

1. 修改解码器定义

将build_decoder函数中模型返回行的输入参数扁平化,去掉嵌套结构:

# 原错误代码
# return Model(inputs=[decoder_inputs, [state_inputs1,state_inputs2]], outputs=decoder_outputs, name="final_decoder")
# 修改后代码
return Model(inputs=[decoder_inputs, state_inputs1, state_inputs2], outputs=decoder_outputs, name="final_decoder")

2. 修改解码器调用逻辑

调用时将所有输入张量打包为一个列表传入,先拆分编码器输出的两个状态,再统一传入解码器:

# 原错误代码
# result = decoder(decoder_target, encoder(inputs))
# 修改后代码
encoder_state_h, encoder_state_c = encoder(inputs)
result = decoder([decoder_target, encoder_state_h, encoder_state_c])

内容的提问来源于stack exchange,提问作者Damian Grzanka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:57:03