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

为何训练分类模型时每个epoch结束无法执行验证测试及回调?

问题核心原因

你代码的验证集生成逻辑存在两处配置错误,导致验证集没有有效样本,训练时跳过了验证步骤,自然不会生成val_loss、val_accuracy这类验证指标,所以依赖这些指标的回调全部触发警告。

  • 错误1:validation_datagen初始化时没有设置validation_split参数,但调用flow_from_directory时指定了subset='validation',导致无法生成验证集样本
  • 错误2:验证集路径配置矛盾,如果你是从同一份数据集拆分训练/验证集,validation_generator的路径应该和训练集一致为Image_folder_path,如果你用的是独立验证集目录,就不应该加subset='validation'参数
可行解决方案

方案1:从训练集目录拆分验证集(和你原有逻辑匹配)

  1. 修正验证集数据生成器的配置,加上和训练集一致的拆分比例:
validation_datagen = ImageDataGenerator(rescale = 1/255.0, validation_split=0.2)
  1. 把验证生成器的路径替换为和训练集一致的路径:
validation_generator = validation_datagen.flow_from_directory(Image_folder_path,
                                                              batch_size=batch_size,
                                                              class_mode='categorical',
                                                              target_size=(img_height, img_width),
                                                              subset='validation'
                                                             )

方案2:使用独立存放的验证集目录

如果你要加载的FolderPath是单独存放的验证集目录,不需要从训练集拆分,直接移除subset参数即可:

validation_datagen = ImageDataGenerator(rescale = 1/255.0)
validation_generator = validation_datagen.flow_from_directory(FolderPath,
                                                              batch_size=batch_size,
                                                              class_mode='categorical',
                                                              target_size=(img_height, img_width)
                                                             )

验证修复结果

运行训练前先打印验证集样本数,确认加载正常:

print("验证集样本数:", validation_generator.samples)

输出数值大于0即代表验证集配置正确,训练时会自动生成验证指标,所有回调都能正常执行。
(可选优化:新版本TensorFlow已经废弃fit_generator,直接使用model.fit即可,原生支持生成器输入)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:36:05