如何解决如何在带有x_train和y_train变量的数据的神经网络中使用python生成器?
我已经按照Francois Chollet的书“ Python的深度学习”中第5章中的示例,使用了keras的ImageDataGenerator来创建标签数据。例如,我将训练目录细分为cat和dog子目录,然后在其中填充图像。使用以下代码,我创建了一个变量,我相信它同时包含图像和标签。
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255)
train_generator = train_datagen.flow_from_directory(
train_dir,target_size = (150,150)
batch_size = 20,class_mode = 'binary')
稍后,在定义模型后,您将使用以下代码运行模型
history = model.fit_generator(
train_generator,steps_per_epoch = 100,epochs =30,validation_data = validation_generator,validation_step=50)
神经网络的许多在线示例都有单独的变量来保存测试和训练数据(例如x_train,y_train,x_test,y_test)。这似乎是最流行的方法。例如:
(x_train,y_train),(x_test,y_test) = mnist.load_data()
您将使用以下代码运行模型:
history = model.fit(x_train,y_train,batch_size=128,epochs=5,verbose=False,validation_split=.1)
loss,accuracy = model.evaluate(x_test,y_test,verbose=False)
是否有一种方法可以将使用ImageDataGenerator创建的数据转换为允许我创建正确格式的x_train,y_train,x_test,y_test数据的格式?谢谢
解决方法
免责声明:我之前从未使用过Keras的ImageDataGenerators,但是从您提供的代码中,我猜想您将不得不创建ImageDataGenerators的不同实例以进行训练,验证和测试:
train_generator = train_datagen.flow_from_directory(
train_dir,target_size = (150,150)
batch_size = 20,class_mode = 'binary')
valid_generator = train_datagen.flow_from_directory(
valid_dir,class_mode = 'binary')
以此类推...而且,model.fit_generator()
已过时。
根据我的经验,最好的工作流程是自己编写数据生成器。对此有很多示例,例如(https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly)。基本上,不是通过在函数中使用return
遍历整个数据集来返回数据,而是分批遍历整个数据集并在函数中yield
遍历数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。