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

构建Keras多输入模型时遇AttributeError:'Model'无'_name'属性

解决Keras Model创建时的AttributeError: 'Model' object has no attribute '_name'错误

嘿,我一眼就看出你代码里的问题啦!

你出错的核心原因是:创建tf.keras.Model时,inputs参数传错了对象。你现在传的是concatenate层输出的张量layer_input,但Keras要求这里必须传入最初定义的Input层实例,而不是拼接后的张量结果。concatenate返回的是层的输出张量,不是合法的模型输入节点,这就导致Keras内部处理元数据时找不到必要的_name属性,抛出了这个错误。

修正后的完整代码

import tensorflow as tf

# 定义两个输入层
layer_input1 = tf.keras.Input(shape=(None, 1), name='layer1')
layer_input2 = tf.keras.Input(shape=(None, 1), name='layer2')

# 拼接两个输入
layer_input = tf.keras.layers.concatenate([layer_input1, layer_input2], name='inputs')

# 后续全连接层
fc_1 = tf.keras.layers.Dense(2, activation='relu')(layer_input)
fc_1 = tf.keras.layers.Dropout(0.5)(fc_1)
fc_2 = tf.keras.layers.Dense(10, activation='relu')(fc_1)
output_layer = tf.keras.layers.Dense(1, activation='relu', name='predictions')(fc_2)

# 关键修正:传入原始的两个Input层作为模型输入
model = tf.keras.Model(inputs=[layer_input1, layer_input2], outputs=output_layer)

为什么这样能解决问题?

当你把[layer_input1, layer_input2]传给inputs参数时,Keras会把这两个Input层识别为模型的输入节点,而拼接层会作为模型内部的第一个运算层,这样整个数据流从输入到输出的链路就完全合法了,内部的元数据处理也不会再出错。

内容的提问来源于stack exchange,提问作者Noel Saade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:47:57