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

LSTM模型报错TypeError: 'int' object is not iterable的修复求助

解决LSTM模型构建中的TypeError: 'int' object is not iterable问题

问题背景

构建LSTM模型时触发如下错误:

TypeError: 'int' object is not iterable

相关代码:

parameters1 = len(data.columns)
model = Sequential()
model.add(LSTM(24, input_shape = parameters1, return_sequences=True))
model.add(LSTM(12))
model.add(Dense(6, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

推测问题出在input_shape参数,但不清楚具体修复方法。

问题原因

Keras中LSTM层的input_shape参数要求传入可迭代的元组,用来定义输入数据的形状(不包含批量维度)。直接传入整数会导致Python尝试迭代该整数时触发错误。

LSTM处理序列数据,输入形状格式为(时间步长, 特征数):

  • 时间步长:序列的长度(比如每个样本包含的时间点数量)
  • 特征数:每个时间点对应的特征数量(即你代码中parameters1的值)

修复方案

将input_shape的整数参数改为元组形式,根据数据情况选择以下写法:

  1. 固定时间步长:如果输入序列是固定长度(比如每个样本仅1个时间步),直接指定时间步长:
parameters1 = len(data.columns)
model = Sequential()
# 这里假设时间步长为1,根据实际数据调整第一个数值
model.add(LSTM(24, input_shape=(1, parameters1), return_sequences=True))
model.add(LSTM(12))
model.add(Dense(6, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
  1. 可变时间步长:如果需要模型支持任意长度的输入序列,将时间步长设为None:
parameters1 = len(data.columns)
model = Sequential()
model.add(LSTM(24, input_shape=(None, parameters1), return_sequences=True))
model.add(LSTM(12))
model.add(Dense(6, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

注意事项

确保输入数据形状与input_shape匹配:输入数据需为(样本数, 时间步长, 特征数)格式,若不符合需先做reshape处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:55:25