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

如何将TensorFlow Keras中的model.fit_generator替换为model.fit

问题:如何将model.fit_generator替换为model.fit?

使用ImageDataGenerator生成训练与验证数据生成器后,调用model.fit_generator时收到如下弃用警告:

WARNING:tensorflow: 来自第2行:Model.fit_generator(来自tensorflow.python.keras.engine.training)已被弃用,将在未来版本中移除。
更新说明:
请使用Model.fit,它支持生成器。

替换方法

直接将model.fit_generator替换为model.fit即可,TensorFlow的Model.fit原生支持ImageDataGenerator生成的数据流,核心参数无需大幅调整:

  • 原generator参数对应model.fit的第一个位置参数(或显式写x=train_generator)
  • steps_per_epoch可以不用手动计算——生成器内部已记录总样本数和批次大小,fit会自动计算每轮所需步数;如果需要强制指定,也可以保留该参数
  • validation_data参数用法和之前完全一致

修改后的完整代码

from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen=ImageDataGenerator(
    rescale=1/255,
    shear_range = 0.2,
    zoom_range = 0.2,
    horizontal_flip = True,
    width_shift_range=0.1,
    height_shift_range=0.1,
    vertical_flip=True,
    validation_split=0.2)

train_generator=train_datagen.flow_from_directory('/content/drive/My Drive/Harvard Medical Dataset2', target_size=(224,224), color_mode='rgb', shuffle=True, subset='training', batch_size=10, class_mode='categorical')

val_generator = train_datagen.flow_from_directory('/content/drive/My Drive/Harvard Medical Dataset2', target_size=(224,224), color_mode='rgb', shuffle=True, subset='validation', batch_size=10, class_mode='categorical')

model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 无需手动计算step_size_train,fit会自动处理
history = model.fit(
    train_generator,
    epochs=80,
    verbose=1,
    validation_data=val_generator
)

如果确实需要手动指定steps_per_epoch,也可以保留相关计算:

step_size_train = train_generator.n // train_generator.batch_size
history = model.fit(
    train_generator,
    steps_per_epoch=step_size_train,
    epochs=80,
    verbose=1,
    validation_data=val_generator
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:17:03