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

如何使用model.fit结合生成器?解决Empty logs报错问题

问题分析与解决方法

核心错误原因

你设置的steps_per_epoch和validation_steps计算逻辑错误:

  • len(train_generator)返回的是训练集总样本数除以batch_size后的步数(比如1000个样本、batch_size=32,len结果就是32)
  • 你再对其除以32,会导致steps_per_epoch变成0,训练时没有执行任何迭代步骤,直接触发"Empty logs"错误

正确的model.fit使用方法

1. 修正生成器的规范问题(非报错核心,但更严谨)

你当前的val_generator和test_generator误用了train_datagen,应该改为对应的数据生成器:

val_generator = val_datagen.flow_from_directory(
    directory=images_valid,
    target_size=(1024,1024),
    class_mode='categorical',
    batch_size=32
)

test_generator = test_datagen.flow_from_directory(
    directory=images_test,
    target_size=(1024,1024),
    class_mode='categorical',
    batch_size=32
)

2. 修正model.fit的参数

直接使用生成器的长度作为steps_per_epoch和validation_steps,或者省略这两个参数(Keras会自动计算):

# 写法1:手动指定正确步数
model.fit(
    train_generator,
    steps_per_epoch=len(train_generator),
    epochs=20,
    validation_data=val_generator,
    validation_steps=len(val_generator)
)

# 写法2:省略steps参数,Keras自动计算
model.fit(
    train_generator,
    epochs=20,
    validation_data=val_generator
)

3. 额外调试方案

如果修正后仍报错,按照提示开启eager模式,能获得更详细的错误信息:

# 编译模型时开启eager模式
model.compile(
    optimizer='adam',
    loss='categorical_crossentropy',
    metrics=['accuracy'],
    run_eagerly=True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:40:58