Keras执行model.fit()报IndexError: list index out of range问题求助
错误成因及修复方案
核心问题定位
- 问题1:
Normalization层的适配逻辑错误
你当前调用normalizer.adapt(train_x[0])仅传入了单个训练样本(形状为(42,))用于统计归一化参数,该方法要求传入全量训练特征数据才能匹配后续批次输入的维度,单样本适配会导致层内部维度统计错乱,触发索引越界。 - 问题2:
axis参数配置不合理
你将Normalization的axis参数设为None,代表对输入张量所有元素统一做归一化,而常规二维特征输入需要按特征维度(axis=-1/axis=1)对每个特征单独做归一化,参数不匹配会触发内部索引逻辑错误。 - 问题3:输入数据类型不兼容
你打印维度时强制将train_x转为NumPy数组,但如果直接传入原生Python嵌套列表到fit方法,低版本TensorFlow的内部索引逻辑不兼容该类型,也会触发索引越界。
修复代码
修正归一化层配置与适配逻辑
# axis设为-1,对每个特征单独做归一化 normalizer = Normalization(input_shape=[42,], axis=-1) # 传入全量训练特征,提前转成NumPy数组避免类型问题 normalizer.adapt(np.array(train_x))
修正训练调用的输入类型
linear_model.compile( optimizer=tf.optimizers.Adam(learning_rate=0.1), loss='mean_absolute_error') linear_model.fit( np.array(train_x), np.array(train_y), epochs=100)
内容的提问来源于stack exchange,提问作者TimO
相关产品推荐
相关产品推荐

