首页 > 编程语言 > 详细

《Deep Learning with python》数据增强

时间:2021-03-27 23:56:38      阅读:70      评论:0      收藏:0      [点我收藏+]

数据增强:利用多种能够生成可信图像的随机变换(比如,旋转、缩放、位移等),从现有的训练样本中生成更多的图像。

下面是《Deep Learning with python》中的示例代码:

import time
from keras import layers, models, optimizers
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
from keras.preprocessing import image
import os

train_dir = datasets/cats_and_dogs_small/train
val_dir = datasets/cats_and_dogs_small/validation
test_dir = datasets/cats_and_dogs_small/test
train_cats_dir = datasets/cats_and_dogs_small/train/cats

# 网络搭建
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation=relu, input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation=relu))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation=relu))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation=relu))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(512, activation=relu))
model.add(layers.Dense(1, activation=sigmoid))

# 网络编译
model.compile(loss=binary_crossentropy,
              optimizer=optimizers.RMSprop(lr=1e-4),
              metrics=[acc])

# 数据预处理
train_datagen = ImageDataGenerator(rescale=1. / 255,
                                   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)

test_datagen = ImageDataGenerator(rescale=1. / 255)

train_generator = train_datagen.flow_from_directory(train_dir,
                                                    target_size=(150, 150),
                                                    batch_size=32,
                                                    class_mode=binary)

val_generator = test_datagen.flow_from_directory(val_dir,
                                                 target_size=(150, 150),
                                                 batch_size=32,
                                                 class_mode=binary)

history = model.fit(train_generator,
                    steps_per_epoch=100,
                    epochs=100,
                    validation_data=val_generator,
                    validation_steps=50)

model.save(cats_and_dogs_small_2.h5)

但是在运行之后,会出现以下警告

WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 10000 batches). You may need to use the repeat() function when building your dataset.
WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 50 batches). You may need to use the repeat() function when building your dataset.

警告表示我的数据不够...目前正在找bug中。

《Deep Learning with python》数据增强

原文:https://www.cnblogs.com/chengzibobo/p/14587165.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!