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

TensorFlow构建神经网络报错:TypeError: 'int'对象不可迭代

问题定位与解决方案:神经网络构建报错TypeError

问题场景

作为机器学习新手,使用Kaggle的Simple Gender Classification数据集(命名为gender_2),完成独热编码、数据归一化后,构建神经网络时触发报错:

TypeError: 'int' object is not iterable

报错指向代码中input_shape=139的设置,修改数值后问题仍存在。

错误原因

Keras的Dense层中,input_shape参数要求传入可迭代的结构(元组或列表),用来定义输入数据的维度。直接传入单个整数139时,Python会尝试遍历这个整数,导致"int不可迭代"的错误。

另外代码中还有一处拼写错误:tf.keras.losess.mae应该是tf.keras.losses.mae(多写了一个s),这会导致后续编译模型时也报错。

解决方案

  1. 修正input_shape的写法,使用元组形式input_shape=(139,),末尾的逗号不能省略,用来明确这是一个单元素元组。
  2. 修正损失函数的拼写错误。

修正后的完整神经网络代码

tf.random.set_seed(42)

# 修正input_shape为元组格式,修正losses拼写
model_gender_2 = tf.keras.Sequential([
    tf.keras.layers.Dense(60, input_shape=(139,)),
    tf.keras.layers.Dense(30),
    tf.keras.layers.Dense(1)
])

model_gender_2.compile(
    loss = tf.keras.losses.mae,
    optimizer = tf.keras.optimizers.Adam(learning_rate = 0.01),
    metrics = ["mae"]
)
model_gender_2.fit(X_train_normal_2, y_train, epochs = 120)

额外提示:如果不确定输入维度的准确值,可以通过X_train_normal_2.shape[1]动态获取,避免手动输入数值出错,写法如下:

tf.keras.layers.Dense(60, input_shape=(X_train_normal_2.shape[1],))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:03:37