【TF2.0-CNN】使用ImageDataGenerator生成训练数据
如果你还没有下载训练数据,请参考这里。
TF2.0提供了极简洁的API用来生成训练数据,你只要指定图片所在的目录。
【例】马与人的分类
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf
from tensorflow.keras.optimizers import RMSproptrain_datagen = ImageDataGenerator(rescale=1/255)
train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human/',target_size=(300, 300),batch_size=128,class_mode='binary')model = tf.keras.models.Sequential([tf.keras.layers.Conv2D(16, (3,3), activation='relu', input_shape=(300, 300, 3)),tf.keras.layers.MaxPooling2D(2, 2),tf.keras.layers.Conv2D(32, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(64, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(64, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(64, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Flatten(),tf.keras.layers.Dense(512, activation='relu'),tf.keras.layers.Dense(1, activation='sigmoid')
])model.summary()model.compile(loss='binary_crossentropy',optimizer=RMSprop(lr=0.001),metrics=['acc'])history = model.fit_generator(train_generator,steps_per_epoch=8,epochs=15,verbose=1)
【重点1】训练数据生成器:
train_datagen = ImageDataGenerator(rescale=1/255)
train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human/',target_size=(300, 300),batch_size=128,class_mode='binary')
这个生成器的重要参数是训练数据(即图片)的在的目录、目标尺寸(模型的输入)、批量尺寸(每次训练多少张图片)、分类模式(二分类还是多分类)
【重点2】fit_generator代替fit
history = model.fit_generator(train_generator,steps_per_epoch=8,epochs=15,verbose=1)
1.训练函数是fit_generator而不是fit
2.参数train_generator并非已经生成的数据,而是一个数据生成器(它能够产生训练数据,但它自己本身不是数据)
【例2】带验证集
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import RMSprop
import tensorflow as tftrain_datagen = ImageDataGenerator(rescale=1/255)
train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human/',target_size=(300, 300),batch_size=128,class_mode='binary')validation_datagen = ImageDataGenerator(rescale=1/255)
validation_generator = validation_datagen.flow_from_directory('/tmp/validation-horse-or-human/',target_size=(300, 300),batch_size=32,class_mode='binary')model = tf.keras.models.Sequential([tf.keras.layers.Conv2D(16, (3,3), activation='relu', input_shape=(300, 300, 3)),tf.keras.layers.MaxPooling2D(2, 2),tf.keras.layers.Conv2D(32, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(64, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(64, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(64, (3,3), activation='relu'),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Flatten(),tf.keras.layers.Dense(512, activation='relu'),tf.keras.layers.Dense(1, activation='sigmoid')
])model.summary()model.compile(loss='binary_crossentropy',optimizer=RMSprop(lr=0.001),metrics=['acc'])history = model.fit_generator(train_generator,steps_per_epoch=8,epochs=15,verbose=1,validation_data = validation_generator,validation_steps=8)
【重点1】比例1多了一个数据生成器
validation_datagen = ImageDataGenerator(rescale=1/255)
validation_generator = validation_datagen.flow_from_directory('/tmp/validation-horse-or-human/',target_size=(300, 300),batch_size=32,class_mode='binary')
这个生成器的作用是产生验证数据
【重点2】fit_generator的参数多了验证数据生成器
history = model.fit_generator(train_generator,steps_per_epoch=8,epochs=15,verbose=1,validation_data = validation_generator,validation_steps=8)
这个参数的作用是生成验证数据,所生成的数据将在每一轮训练结束后对模型进行验证。
【输出】:
红框的信息是验证数据的损失和准确率。
本文重点是生成训练数据,可参考Keras官网API:https://keras.io/preprocessing/image/
【TF2.0-CNN】使用ImageDataGenerator生成训练数据相关推荐
- 点云语义分割标注工具及生成训练数据
1.软件的安装 (1)下载后随便你解压到那个文件夹下(软件github地址) github链接 (2)在终端中运行: curl https://install.meteor.c ...
- 谷歌新大招UDG|直接生成训练数据送给你
卷友们好,我是rumor. 最近我越来越相信Prompt概念了,不光是paper数量越来越多,关键是用过的都说好.比如我的同事,比如我面试到的同学,再比如我看到的一些实践博客.估计在它席卷所有任务和d ...
- ajax给data赋值,vue 2.0 methods 里ajax生成的数据,怎么赋值给data
{{pro.price}} {{pro.num}} var vm = new Vue({ el:'#all', data:{ detail:[ {name:'五档',id:'0',iscur:true ...
- 谷歌BERT预训练源码解析(一):训练数据生成
目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...
- 【pytorch】MobileNetV2迁移学习+可视化+训练数据保存
一.前言 由于写论文,不单单需要可视化数据,最好能将训练过程的完整数据全部保存下来.所以,我又又又写了篇迁移学习的文章,主要的改变是增加了训练数据记录的模块,可以将训练全过程的数据记录为项目路径下的E ...
- 人脸识别0-02:insightFace-模型训练与训练数据制作-史上最全
以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加QQ:944284742相互讨论技术. 人脸识别0-00:insightFace目录:https ...
- tf2.0先试试图片(七)——CNN卷积神经网络
之前已经介绍了TenforFlow的基本操作和神经网络,主要是全联接网络的一些概念: tf2.0先试试图片(七)--CNN卷积神经网络 7.0 简介 7.1 全连接网络的问题 7.1.1 局部相关性 ...
- 如何用tf2.0训练中文聊天机器人chatbot
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 一个可以自己进行训练的中文聊天机器人, 根据自己的语料训练出自己想要的聊天机器人,可以用于智能 ...
- Tf2.0+基于注意力的神经机器翻译训练发布过程
本篇是人工智能.机器翻译的干货文章,面向从事人工智能的研发工程师和翻译领域的职业从业者.意在译员能更好的从计算机编程角度理解机器翻译的代码实现过程.同时也和机器翻译开发工程师共同分享源码的快乐.实例是 ...
- NLP中数据增强的综述,快速的生成大量的训练数据
作者:amitness编译:ronghuaiyang 导读 深度学习视觉领域的增强方法可以很大程度上提高模型的表现,并减少数据的依赖,而NLP上做数据增强不像在图像上那么方便,但还是有一些方法的. 与 ...
最新文章
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- 英国EE:启动TechCity 2.0 首期将部署LTE-Advanced Pro
- Go从入门到精通(一)go语言初识
- Java泛型总结---基本用法,类型限定,通配符,类型擦除
- dell电脑重装linux系统,重装系统出现问题,如何解决?
- 真香定律!一文带你搞懂Android多线程Handler,成功入职腾讯
- wordpress url index.php,WordPress对URL的路由解析过程详解
- android-手势-基础知识总结
- Wordpress网站渗透测试(进阶详细思路)
- 安信可IDE 1.5编译ESP8266 RTOS 3.0
- 大数据数据挖掘与云计算-认识大数据
- html右键打印,怎么在鼠标右键添加打印选项?
- 九章算术 五:《商功》
- 华为2018年服务器销售额,2018Q4华为服务器收入全球第三 同比增45.9%
- Unity3D教程:回合制游戏实现 1
- 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏...
- 如何设置STM32 IO端口输入输出
- cipher java 安全_Java安全(未完待续)
- 无人便利店风口盛起,谁是最后赢家?
- java 实战机试题_Java项目实战(黑龙江联盟)-中国大学mooc-试题题目及答案