如何在不使用model.fit_generator的情况下对Keras中的图像应用旋转?

我正在使用卷积神经网络进行图像像素分类问题。我的训练images大小为128x128x3,标签mask的大小为128x128

我在Keras中进行训练的方式如下:

Xtrain, Xvalid, ytrain, yvalid = train_test_split(images, masks,test_size=0.3, random_state=567)model.fit(Xtrain, ytrain, batch_size=32, epochs=20, verbose=1, shuffle=True, validation_data=(Xvalid, yvalid))

然而,我希望对Xtrainytrain应用随机二维旋转,它们的大小分别为128x128x3128x128。更具体地说,我希望在每次epoch迭代时应用这种旋转。

目前,我希望继续使用model.fit,而不使用model.fit_generator,因为我知道数据增强通常是通过.fit_generator完成的。

所以,本质上,我希望循环model.fit,这样Xtrainytrain在每个epoch都会随机旋转。我是Python和Keras的新手,所以如果这有可能实现,任何见解都是欢迎的。


回答:

这是一个使用ImageDataGenerator将输出保存到指定目录的示例,从而绕过使用model.fit_generator的要求。

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_imgdatagen = ImageDataGenerator(        rotation_range=40,        width_shift_range=0.2,        height_shift_range=0.2,        shear_range=0.2,        zoom_range=0.2,        horizontal_flip=True,        fill_mode='nearest')img = load_img('data/train/cats/cat.0.jpg')  # 这是一个PIL图像x = img_to_array(img)  # 这是一个形状为(3, 150, 150)的Numpy数组x = x.reshape((1,) + x.shape)  # 这是一个形状为(1, 3, 150, 150)的Numpy数组# 下面的.flow()命令生成一批随机变换的图像# 并将结果保存到`preview/`目录i = 0for batch in datagen.flow(x, batch_size=1,                          save_to_dir='preview', save_prefix='cat', save_format='jpeg'):    i += 1    if i > 20:        break  # 否则生成器将无限循环

摘自这里:https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

您可以更改参数以适应您的用例,然后生成您的X_train和X_valid或任何数据集,然后加载到内存中并使用普通的model.fit。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注