深度学习手动拆分数据集后如何评估模型并解决evaluate方法报错
错误根因
Keras的model.evaluate()方法参数规则为:当传入keras.utils.Sequence类型的生成器(比如你用ImageDataGenerator生成的train_generator、test_generator)作为输入时,单个生成器已经封装了样本数据和对应标签,不需要额外传入第二个参数作为标签y。
你同时传入了train_generator和test_generator两个参数,框架会把第二个test_generator识别为手动指定的y参数,不符合生成器输入的使用规则,因此触发报错。
解决方法
- 如果你需要评估模型在测试集上的表现,仅传入测试集生成器单参数即可:
score = model.evaluate(test_generator, verbose=1)
- 如果你需要同时获取模型在训练集和测试集上的评估结果,分开两次调用
evaluate方法:
# 评估训练集表现 train_score = model.evaluate(train_generator, verbose=1) # 评估测试集表现 test_score = model.evaluate(test_generator, verbose=1)
- 额外检查项:确认你的
test_generator初始化时参数配置正确,class_mode设置和模型输出匹配,避免后续运行出现其他格式类报错。
内容的提问来源于stack exchange,提问作者Muhammad Rifqi
相关产品推荐
相关产品推荐

