如何将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
相关产品推荐
相关产品推荐

