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

使用Keras构建多标签分类器时遇AttributeError问题求助

搞定Keras多标签分类里的AttributeError问题

嘿,我帮你排查了下代码,发现几个很典型的小错误,正是它们引发了这个AttributeError: 'Sequential' object has no attribute '_feed_input_names'的问题,咱们一个个来解决:

1. 变量名张冠李戴啦!

你明明把模型实例赋值给了nn变量,结果训练的时候却写了model.fit()——Keras根本找不到叫model的模型,可不就报错嘛!

2. 输入形状和数据不匹配

你的训练数据X_train只有3个特征(f1、f2、f3),但你在第一层全连接层里设置的input_shape=(10,),这相当于告诉模型“我要给你传10个特征的数据”,可实际输入是3个,模型直接懵了,这也是错误的一大原因。

3. 没用的自定义函数可以删掉

你写了个softmax函数但完全没用到,多标签分类用sigmoid输出+binary_crossentropy损失是完全正确的,留着这个函数只会增加代码冗余,删掉就行。

修正后的完整代码

from keras.models import Sequential
from keras.layers import Dense
import pandas as pd  # 如果用pandas加载数据的话需要导入

# 假设你的数据是pandas DataFrame,这里可以根据实际加载方式调整
# X_train = pd.DataFrame([[1,1,5],[0,2,4],[1,0,4]], columns=['f1','f2','f3'])
# y_train = pd.DataFrame([[0,1],[1,1],[0,0]], columns=['c1','c2'])

# 构建多标签分类模型
nn = Sequential()
# 输入维度对应特征数3,用input_dim更直观,也可以写成input_shape=(3,)
nn.add(Dense(10, activation="relu", input_dim=3))
nn.add(Dense(2, activation="sigmoid"))

# 编译模型,多标签分类用binary_crossentropy是正确的
nn.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 训练模型,注意用咱们定义好的nn变量!
nn.fit(X_train.values, y_train.values, batch_size=16, epochs=5, verbose=1, validation_split=0.1)

额外提个小建议

你示例里的训练数据只有3条,用validation_split=0.1的话,验证集可能连1条数据都分不到,训练的时候大概率会有警告。建议你多准备点训练数据,或者暂时去掉validation_split参数~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:58:21