如何显示 keras.preprocessing.image.ImageDataGenerator 之前和之后的数据扩充结果
how to show results of data augmentation before and after keras.preprocessing.image.ImageDataGenerator
我目前正在使用 ASL 数据集 https://www.kaggle.com/datamunge/sign-language-mnist.
训练 CNN 为了优化我的准确性,我使用了 Keras 的 ImageDataGenerator。我想打印出数据增强的结果(数据增强前后的图像)。但我不明白如何绘制数据生成的结果。这是我的代码:
datagen = keras.preprocessing.image.ImageDataGenerator(
featurewise_center=False, samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False, rotation_range=10,
zoom_range=0.1, width_shift_range=0.1,
height_shift_range=0.1, horizontal_flip=False,
vertical_flip=False)
datagen.fit(train_data)
result_data = datagen.flow(train_data, train_label, batch_size=128)
print(result_data)
train_data 是形状为 (20, 28, 28, 1) 和 train_label(20, 1) 的 numpy 数组,因为它们是 20 张具有 28*28 像素和第三维的图像对于在 CNN 中的使用。
我想用 matploit lib 绘制它,但也对其他任何东西(像素的 np 数组)感到满意。
如果有人也能告诉我如何打印datagen 生成的数据量会很棒。
在此先感谢您的帮助。
首先,您可以创建默认数据生成器来轻松绘制原始图像
datagenOrj = keras.preprocessing.image.ImageDataGenerator()
您可以将像前五张图片这样的小样本流入您的 'datagen'。该生成器随机获取图像。为了进行适当的比较,小而确定的采样对于大数据集可能是好的。
result_data = datagen.flow(train_data[0:5], train_label[0:5], batch_size=128)
result_data_orj = datagenOrj.flow(train_data[0:5], train_label[0:5], batch_size=128)
当您调用 next() 函数时,您的数据生成器会加载您的第一批数据。结果应同时包含训练数据和训练标签。您可以通过索引访问它们。
def getSamplesFromDataGen(resultData):
x = resultData.next() #fetch the first batch
a = x[0] # train data
b = x[1] # train label
for i in range(0,5):
plt.imshow(a[i])
plt.title(b[i])
plt.show()
小心密谋。您可能需要重新缩放数据。如果你的数据类型是浮点数,你需要在 0 到 1 之间缩放,如果你的数据类型是整数,你应该在 0 到 255 之间缩放。要做到这一点,你可以使用 rescale 属性.
datagenOrj = keras.preprocessing.image.ImageDataGenerator(rescale=1.0/255.0)
我尝试了我自己的数据集,它正在运行。
最佳
我目前正在使用 ASL 数据集 https://www.kaggle.com/datamunge/sign-language-mnist.
训练 CNN 为了优化我的准确性,我使用了 Keras 的 ImageDataGenerator。我想打印出数据增强的结果(数据增强前后的图像)。但我不明白如何绘制数据生成的结果。这是我的代码:
datagen = keras.preprocessing.image.ImageDataGenerator(
featurewise_center=False, samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False, rotation_range=10,
zoom_range=0.1, width_shift_range=0.1,
height_shift_range=0.1, horizontal_flip=False,
vertical_flip=False)
datagen.fit(train_data)
result_data = datagen.flow(train_data, train_label, batch_size=128)
print(result_data)
train_data 是形状为 (20, 28, 28, 1) 和 train_label(20, 1) 的 numpy 数组,因为它们是 20 张具有 28*28 像素和第三维的图像对于在 CNN 中的使用。
我想用 matploit lib 绘制它,但也对其他任何东西(像素的 np 数组)感到满意。
如果有人也能告诉我如何打印datagen 生成的数据量会很棒。
在此先感谢您的帮助。
首先,您可以创建默认数据生成器来轻松绘制原始图像
datagenOrj = keras.preprocessing.image.ImageDataGenerator()
您可以将像前五张图片这样的小样本流入您的 'datagen'。该生成器随机获取图像。为了进行适当的比较,小而确定的采样对于大数据集可能是好的。
result_data = datagen.flow(train_data[0:5], train_label[0:5], batch_size=128)
result_data_orj = datagenOrj.flow(train_data[0:5], train_label[0:5], batch_size=128)
当您调用 next() 函数时,您的数据生成器会加载您的第一批数据。结果应同时包含训练数据和训练标签。您可以通过索引访问它们。
def getSamplesFromDataGen(resultData):
x = resultData.next() #fetch the first batch
a = x[0] # train data
b = x[1] # train label
for i in range(0,5):
plt.imshow(a[i])
plt.title(b[i])
plt.show()
小心密谋。您可能需要重新缩放数据。如果你的数据类型是浮点数,你需要在 0 到 1 之间缩放,如果你的数据类型是整数,你应该在 0 到 255 之间缩放。要做到这一点,你可以使用 rescale 属性.
datagenOrj = keras.preprocessing.image.ImageDataGenerator(rescale=1.0/255.0)
我尝试了我自己的数据集,它正在运行。
最佳