首页 > 解决方案 > 这段代码是否增加了输入数据?

问题描述

model=tf.keras.Sequential(
[
    Conv2D(filters=1, kernel_size=(3, 3), activation='relu', strides=1, padding='same'),    
    MaxPooling2D(pool_size=(4, 4)),
    
    Flatten(),
    Dense(6,activation="softmax")
    
])

model.compile(loss='CategoricalCrossentropy',
              optimizer='adam',
              metrics=['accuracy'])

train_datagen = ImageDataGenerator(                                  # Real time data augmentation
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

train_generator = train_datagen.flow_from_directory(            # Loads the File which contains the images.
        'train',                                                # Returns x (numpy array containing a batch of images)
        target_size=(150, 150),                                 # and correcponding labels
        class_mode='categorical')

model.fit( train_generator,
        batch_size=100,
        epochs=1)

此代码的输出不提供有关数据增强的任何信息。那么任何人都可以澄清这段代码是否增加了可用数据?

标签: pythontensorflowkerasconv-neural-networkdata-augmentation

解决方案


下面的代码扩充了您编写的输入图像

train_datagen = ImageDataGenerator(# Real time data augmentation
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True)

但是,没有内置的方法来测试数据是否已被扩充。您只能检查数据的结果以了解它是否已增强并获取您打算获取的任何信息。

例如,了解rescale=1./255 扩充是否有效的一种方法是打印出 的结果train_generator以检查值是否介于0 - 1 (normalized)或之间0 - 255 (default)

image, label = next(train_generator) # return a single iteration batch
print(image.shape) #single batch list, if batch not specified (default is 32)
print(image[0].shape) # single image shape
print(image[0]) # single image output

你会得到一个看起来像这样的输出

在此处输入图像描述

这表明调整大小的图像有效,否则你会得到这样的东西

在此处输入图像描述

这表明调整大小的图像不适用。我相信您可以对您打算确认的其他增强使用类似的方法


推荐阅读