TensorFlow多分类图像分类器出现<list index out of range>错误求助
报错原因分析
- 第一个问题:验证集数据生成器没有传入标签
你调用validation_datagen.flow()的时候只传入了测试图片testing_images_extra_dim,没有传入对应的标签testing_labels,模型在验证阶段计算损失时找不到真实标签值,触发了索引越界错误。 - 第二个问题:
validation_steps参数计算逻辑错误
你写的len(testing_images/10)是错误写法:testing_images/10会得到一个所有元素都除以10的numpy数组,len()取的还是测试集的总样本数,正确的写法应该是总样本数除以批次大小,即len(testing_images)//10。
修复方案
把model.fit_generator部分的代码替换为以下内容即可:
history = model.fit_generator( training_datagen.flow(training_images_extra_dim, training_labels, batch_size = 10), epochs=2, steps_per_epoch=20, # 验证生成器同时传入图片和对应标签 validation_data = validation_datagen.flow(testing_images_extra_dim, testing_labels, batch_size=10), verbose = 1, # 正确计算验证步数:总样本数/批次大小,取整数 validation_steps=len(testing_images)//10 )
补充说明
如果你的TensorFlow版本高于2.1,更推荐使用model.fit()替代已经弃用的model.fit_generator(),fit()方法原生支持数据生成器输入,用法和参数完全兼容,不需要修改其他逻辑。
内容的提问来源于stack exchange,提问作者Sandy Lee
相关产品推荐
相关产品推荐

