如何获取ImageDataGenerator.flow_from_directory Keras中的值列表?
作者:互联网
我们可以使用带有flow_from_directory方法的ImageDataGenerator生成图像数据集.对于调用类的列表,我们可以使用oject.classes.但是,如何调用值列表?我搜索过但仍未发现任何问题.
谢谢 :)
解决方法:
ImageDataGenerator是一个python生成器,它每次都会生成一组数据,其形状与模型输入相同(如(batch_size,width,height,channels)).生成器的好处是当您的数据集太大时,您无法将所有数据放入有限的内存中,但是,使用生成器,您每次都可以生成一个批处理数据. ImageDataGenerator与model.fit_generator(),model.predict_generator()一起使用.
如果要获取数值数据,可以使用生成器的next()函数:
import numpy as np
data_gen = ImageDataGenerator(rescale = 1. / 255)
data_generator = datagen.flow_from_directory(
data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical')
data_list = []
batch_index = 0
while batch_index <= data_generator.batch_index:
data = data_generator.next()
data_list.append(data[0])
batch_index = batch_index + 1
# now, data_array is the numeric data of whole images
data_array = np.asarray(data_list)
或者,你可以自己使用PIL和numpy处理图像:
from PIL import Image
import numpy as np
def image_to_array(file_path):
img = Image.open(file_path)
img = img.resize((img_width,img_height))
data = np.asarray(img,dtype='float32')
return data
# now data is a tensor with shape(width,height,channels) of a single image.
然后,您可以使用此函数循环所有图像以获取数字数据.
请注意,我建议您使用生成器而不是直接获取所有数据,或者,您可能会耗尽内存.
标签:python,keras,conv-neural-network,deep-learning 来源: https://codeday.me/bug/20190823/1699854.html