Keras中文文档:图像预处理ImageDataGenerator 类详细学习记录
写在前面的话
- 受教于学长,Keras的探究还需进行
- 要把Keras用得熟练并非那么容易
1.ImageDataGenerator 类
参考文献:https://keras.io/zh/preprocessing/image/
1.1使用datagen.flow()
import keras.datasets.cifar10 as cifar10 # 这里源码中没有写,我自己加上了
(x_train, y_train), (x_test, y_test) = cifar10.load_data() # 加载cifar10数
# 将标签全部转换为one—hot类型的
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)
# ImageDataGenerator中的输入参数是dict类型的
datagen = ImageDataGenerator(featurewise_center=True,featurewise_std_normalization=True,rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True)# 计算特征归一化所需的数量
# (如果应用 ZCA 白化,将计算标准差,均值,主成分)
datagen.fit(x_train) # x_train为4维张量# 使用实时数据增强的批数据对模型进行拟合:
model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),steps_per_epoch=len(x_train) / 32, epochs=epochs)# 这里有一个更 「手动」的例子
for e in range(epochs):print('Epoch', e)batches = 0# 一次读了32个训练数据进来for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32):model.fit(x_batch, y_batch) # 训练batches += 1if batches >= len(x_train) / 32:# 我们需要手动打破循环,# 因为生成器会无限循环break
1.2使用train_datagen.flow_from_directory()
train_datagen = ImageDataGenerator(rescale=1./255,shear_range=0.2,zoom_range=0.2,horizontal_flip=True)test_datagen = ImageDataGenerator(rescale=1./255)
# flow_from_directory()第一个参数是数据所在目录,且在这个目录下包含多个独立的子文件夹,每个文件夹下面放着同种类别的数据,这些独立的子文件夹将自动视为不同的类别,也就省去了做标签的过程了
# 其中的binary指的是二分类问题,categorical指one-hot多分类,sparse指整数多分类,input用于自编码
train_generator = train_datagen.flow_from_directory('data/train',target_size=(150, 150),batch_size=32,class_mode='binary')validation_generator = test_datagen.flow_from_directory('data/validation',target_size=(150, 150),batch_size=32,class_mode='binary')model.fit_generator(train_generator,steps_per_epoch=2000,epochs=50,validation_data=validation_generator,validation_steps=800)
1.3同时对image和mask做数据增强
# 创建两个相同参数的实例
# data_gen_args 是一个字典变量
data_gen_args = dict(featurewise_center=True,featurewise_std_normalization=True,rotation_range=90,width_shift_range=0.1,height_shift_range=0.1,zoom_range=0.2)
# 这里用到的**data_gen_args其实就是定义了一种dict传入函数的方式
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)# 为 fit 和 flow 函数提供相同的种子和关键字参数
seed = 1
image_datagen.fit(images, augment=True, seed=seed)
mask_datagen.fit(masks, augment=True, seed=seed)image_generator = image_datagen.flow_from_directory('data/images',class_mode=None, # None的作用是只返回数据增强后的数据,而不生成标签,这对model.predict_generator(), model.evaluate_generator()是很有用的seed=seed)mask_generator = mask_datagen.flow_from_directory('data/masks',class_mode=None,seed=seed)# 将生成器组合成一个产生图像和蒙版(mask)的生成器
train_generator = zip(image_generator, mask_generator)# fit_generator可以完成咋cpu上进行实时数据增强,然后同时使用GPU进行模型的训练
model.fit_generator(train_generator,steps_per_epoch=2000,epochs=50)
补:
2.用dict变量给keras中的ImageDataGenerator()赋值
from keras.preprocessing.image import ImageDataGenerator
data_gen_args = dict(rotation_range=90) #等效于以下的表达方式:{'rotation_range':90}
image_datagen = ImageDataGenerator(**data_gen_args) # 这里加不加**都可以
本人现在的研究方向是:
图像的语义分割,如果有志同道合的朋友,可以组队学习
haiyangpengai@gmail.com qq:1355365561
Keras中文文档:图像预处理ImageDataGenerator 类详细学习记录相关推荐
- keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)
版权声明:小博主水平有限,希望大家多多指导. 目录: [使用传统DNN] BG大龍:[DL项目实战02]图像分类--Keras框架+使用传统神经网络DNNzhuanlan.zhihu.com [使用 ...
- keras中文文档学习笔记—快速上手keras
keras的核心数据结构是"model",其中最主要的是Sequential模型: Sequential模型调用 from keras.model import Sequentia ...
- keras中文文档_Keras分词器Tokenizer
Tokenizer 是一个用于向量化文本,或将文本转换为序列的类.是用来文本预处理的第一步:分词. 简单来说,计算机在处理语言文字时,是无法理解文字的含义,通常会把一个词(中文单个字或者词组认为是一个 ...
- dropout层加在哪里_常用层 - Keras中文文档
常用层 常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接.激活层等 Dense层 keras.layers.core.Dense(units, activation=None ...
- Keras 深度学习框架中文文档
2019独角兽企业重金招聘Python工程师标准>>> Keras深度学习框架中文文档 Keras官网:http://keras.io/ Github项目:https://githu ...
- Keras官方中文文档:Keras安装和配置指南(Windows)
这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...
- PyTorch中文文档阅读笔记-day1
写在开头(重复的) 1.课程来源:torch中文教程1.7版. torch中文文档. 2.笔记目的:个人学习+增强记忆+方便回顾 3.时间:2021年4月29日 4.仅作为个人笔记,如有需要请务必按照 ...
- Python 深度学习库 Keras 发布官方中文文档,这里有你需要了解的一切
今年1月,Keras作者.谷歌AI研究员François Chollet在推特上发出召唤:讲中文的Keras用户们,是否有人愿意帮忙一起搞个Keras文档的中文版? 一个多月后,官方中文文档来了. K ...
- 【Scikit-Learn 中文文档】34 预处理数据 - 数据集转换 - 用户指南 | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/stable/modules/preprocessing.html 英文文档: http://sklearn.apachecn ...
最新文章
- SSL与TLS的区别
- 您与此网站建立的连接不安全_PERT地暖管热熔连接到底安全不安全?
- codis配置_codis 源码理解
- centos配置单网卡双IP
- 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究
- C/C++线程与多线程工作笔记0006---VC++中_T()的作用
- [] __nw_connection
- asp.net连接access数据库两种方法
- android删除重复照片,android 删除重复文件
- Rust : codewars的Product of consecutive Fib numbers
- 运维--域服务器--搭建
- 消费者行为学的典型营销案例
- 猜数游戏,随机生成一个1~100的数进行猜测。
- 疾病负担研究(GBD)-如何绘制GBD相关性图
- 程序员因工资低拒绝offer,HR:估计你一辈子就是个程序员
- java后台生成echarts图表
- 路由器DNS被劫持 解决办法、网站被劫持怎么办怎么解决
- 将DAT格式视频文件转换成ASF和WMV格式视频文件
- 岁末年初,2013随笔
- sketch操作(一)
热门文章
- vs不想运行某个项目_Creo二次开发--项目搭建
- java希尔排序_java_java高级排序之希尔排序,希尔排序对于多达几千个数据 - phpStudy...
- Linux中的文件查找技巧
- N---Exponentiation
- 图像处理——PIL、OpenCV和numpy表示图像数据格式的相互转换
- Android测试——在Python中如何将Windows程序前台显示
- 如何在Linux中的virtualbox中安装Windows 10
- gpu版本的torch安装
- leetcode939.MinimumAreaRectangle
- asp.net免费网站三剑客:WebMatrix + MojoPortal + SQLCE