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

Keras调用Concatenate层出现'Nonetype' object is not subscriptable错误

问题修复方案

错误原因

  • Concatenate 拼接层接收的输入必须是张量列表,你传入模型实例列表/层实例列表都无法被层正确识别形状,导致检测到input_shape为None,触发下标访问报错
  • build_model 函数内存在未定义变量img_inp,构造模型时错误使用了不存在的输入张量,打断了张量形状的传递链路
  • get_complete_model仅返回单个模型对象,调用时用两个变量接收会触发后续解包错误

具体修改步骤

1. 修复build_model的输入变量错误

将构造模型时使用的未定义变量img_inp替换为传入的输入层参数inp_layer:

if return_feature_model:
    featext_model = keras.Model(inputs=[inp_layer], outputs=[feat_output])
model = keras.Model(inputs=[inp_layer], outputs=[output])

2. 修复传入Concatenate的内容

不要往列表中追加模型实例,改为追加每个特征提取模型的输出张量:

for model_path in featvec_model_paths:
    model_name = os.path.basename(model_path)[5:-5]
    _, featvec_model = build_model(model_name=model_name, dim=dim,
                                   return_feature_model=True,
                                   inp_layer=input_layer)
    featvec_model.load_weights(model_path)
    featvec_model.trainable = False
    # 追加模型输出张量,而非模型本身
    models.append(featvec_model.output)

3. 修复调用时的解包错误

get_complete_model仅返回单个最终训练模型,不需要用两个变量接收:

final_model = get_complete_model(featvec_paths, dim=384)

修改完成后重新运行即可正常完成多模型特征拼接,不会再触发形状相关报错。

内容的提问来源于stack exchange,提问作者Priyam Mehta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 18:15:10