Keras实践笔记10——使用ImageDataGenerator进行图像增广

1from __future__ import print_function 2 3import keras 4from keras.datasets import cifar10 5from keras.layers import Conv2D, MaxPooling2D 6from keras.layers import Dense, Dropout, Flatten 7from keras.models import Sequential 8from keras.preprocessing.image import ImageDataGenerator 9 10(x_train, y_train), (x_test, y_test) = cifar10.load_data() 11 12x_train = x_train.astype('float32') 13x_test = x_test.astype('float32') 14 15x_train /= 255 16x_test /= 255 17 18y_train = keras.utils.to_categorical(y_train, 10) 19y_test = keras.utils.to_categorical(y_test, 10) 20 21model = Sequential() 22model.add(Conv2D(32, (3, 3), padding='same', 23 input_shape=x_train.shape[1:], activation='relu')) 24model.add(Conv2D(32, (3, 3), activation='relu')) 25model.add(MaxPooling2D()) 26model.add(Dropout(0.25)) 27 28model.add(Conv2D(64, (3, 3), padding='same', activation='relu')) 29model.add(Conv2D(64, (3, 3), activation='relu')) 30model.add(MaxPooling2D()) 31model.add(Dropout(0.25)) 32 33model.add(Flatten()) 34model.add(Dense(512, activation='relu')) 35model.add(Dropout(0.5)) 36model.add(Dense(10, activation='softmax')) 37 38model.compile(loss='categorical_crossentropy', 39 optimizer=keras.optimizers.rmsprop(lr=0.0001, decay=1e-6), 40 metrics=['accuracy']) 41 42datagen = ImageDataGenerator( 43 featurewise_center=False, 44 samplewise_center=False, 45 featurewise_std_normalization=False, 46 samplewise_std_normalization=False, 47 zca_whitening=False, 48 rotation_range=0, 49 width_shift_range=0.1, 50 height_shift_range=0.1, 51 horizontal_flip=True, 52 vertical_flip=False) 53 54datagen.fit(x_train) 55 56model.fit_generator(datagen.flow(x_train, y_train, 57 batch_size=32), 58 epochs=100, 59 validation_data=(x_test, y_test), 60 workers=4) 61 62 63 64_________________________________________________________________ 65Layer (type) Output Shape Param # 66================================================================= 67conv2d_1 (Conv2D) (None, 32, 32, 32) 896 68_________________________________________________________________ 69conv2d_2 (Conv2D) (None, 30, 30, 32) 9248 70_________________________________________________________________ 71max_pooling2d_1 (MaxPooling2 (None, 15, 15, 32) 0 72_________________________________________________________________ 73dropout_1 (Dropout) (None, 15, 15, 32) 0 74_________________________________________________________________ 75conv2d_3 (Conv2D) (None, 15, 15, 64) 18496 76_________________________________________________________________ 77conv2d_4 (Conv2D) (None, 13, 13, 64) 36928 78_________________________________________________________________ 79max_pooling2d_2 (MaxPooling2 (None, 6, 6, 64) 0 80_________________________________________________________________ 81dropout_2 (Dropout) (None, 6, 6, 64) 0 82_________________________________________________________________ 83flatten_1 (Flatten) (None, 2304) 0 84_________________________________________________________________ 85dense_1 (Dense) (None, 512) 1180160 86_________________________________________________________________ 87dropout_3 (Dropout) (None, 512) 0 88_________________________________________________________________ 89dense_2 (Dense) (None, 10) 5130 90================================================================= 91Total params: 1,250,858 92Trainable params: 1,250,858 93Non-trainable params: 0

这次的示例是采样cifar数据集进行的图像分类训练,用的是卷积神经网络,但是与之前的玩法不同,这次使用了ImageDataGenerator 这个工具来做图像增广。与之前最大的区别就是,我们一共fit了2次,第一次是对图像进行增广出来,第二次,也就是真正训练模型的时候,使用的是fit_generator 这个方式

ImageDataGenerator的参数描述及处理效果可以查看这篇文章,非常的好图片数据集太少?看我七十二变,Keras Image Data Augmentation 各参数详解

这个训练还有个特点,就是fit_generator里面,我们传入的是

datagen.flow(x_train, y_train,batch_size=32)

他会以32个作为一个批次,不断的产生新的图片,这样我们就可以在我们原有的少量数据集中,获得非常多的不同处理的图片作为训练了,训练集一下就多了起来。最后在fit_generator的时候,我们指定了用4个线程去跑,加快训练的速度

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap

Keras实践笔记10——使用ImageDataGenerator进行图像增广 - HelloWorld