Keras 将model.fit_生成器转换为model.fit

Keras 将model.fit_生成器转换为model.fit,keras,tensorflow2.0,tensorflow2.x,Keras,Tensorflow2.0,Tensorflow2.x,我有以下代码 train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) test_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory(

我有以下代码

train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
        'data/train',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
        'data/validation',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')
现在,
model.fit\u生成器
定义如下:

model.fit_generator(
        train_generator,
        steps_per_epoch=2000,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800)

现在不推荐使用
model.fit\u generator
,将
model.fit\u generator
更改为
model.fit
的正确方法是什么?在这种情况下,您只需将
model.fit\u generator()
更改为
model.fit()

从TensorFlow 2.1开始,
model.fit()
也接受生成器作为输入。就这么简单

根据TensorFlow的官方文件:

警告:此函数已弃用。它将在将来被移除 版本更新说明:请使用Model.fit,其中 支持发电机

旧的 培训=模型。拟合发生器(发生器=序列发生器,每个历元的步骤=2048//36,历元=10,验证数据=验证发生器,验证步骤=832//16)

除掉“发电机” 新的
training=model.fit(train\u generator,steps\u per\u epoch=2048//128,epoch=10,validation\u data=validation\u generator,validation\u steps=832//16)

顺便说一句,steps\u per\u epoch=int(steps\u per\u epoch/批量大小)。您的代码对最新版本的TensorFlow(TensorFlow中的Keras)无效。@TimbusCalin这里有什么问题?问题是每个历元的步长应等于划分为批次大小的训练样本数,不是训练样本的总数。这个答案提供了什么,而被接受的答案没有?因为它是陈述式的,而被接受的答案是命令式的