如果你还没有下载训练数据,请参考这里。

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.软件的安装     (1)下载后随便你解压到那个文件夹下(软件github地址)     github链接     (2)在终端中运行: curl https://install.meteor.c ...

  2. 谷歌新大招UDG|直接生成训练数据送给你

    卷友们好,我是rumor. 最近我越来越相信Prompt概念了,不光是paper数量越来越多,关键是用过的都说好.比如我的同事,比如我面试到的同学,再比如我看到的一些实践博客.估计在它席卷所有任务和d ...

  3. 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 ...

  4. 谷歌BERT预训练源码解析(一):训练数据生成

    目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...

  5. 【pytorch】MobileNetV2迁移学习+可视化+训练数据保存

    一.前言 由于写论文,不单单需要可视化数据,最好能将训练过程的完整数据全部保存下来.所以,我又又又写了篇迁移学习的文章,主要的改变是增加了训练数据记录的模块,可以将训练全过程的数据记录为项目路径下的E ...

  6. 人脸识别0-02:insightFace-模型训练与训练数据制作-史上最全

    以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加QQ:944284742相互讨论技术. 人脸识别0-00:insightFace目录:https ...

  7. tf2.0先试试图片(七)——CNN卷积神经网络

    之前已经介绍了TenforFlow的基本操作和神经网络,主要是全联接网络的一些概念: tf2.0先试试图片(七)--CNN卷积神经网络 7.0 简介 7.1 全连接网络的问题 7.1.1 局部相关性 ...

  8. 如何用tf2.0训练中文聊天机器人chatbot

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 一个可以自己进行训练的中文聊天机器人, 根据自己的语料训练出自己想要的聊天机器人,可以用于智能 ...

  9. Tf2.0+基于注意力的神经机器翻译训练发布过程

    本篇是人工智能.机器翻译的干货文章,面向从事人工智能的研发工程师和翻译领域的职业从业者.意在译员能更好的从计算机编程角度理解机器翻译的代码实现过程.同时也和机器翻译开发工程师共同分享源码的快乐.实例是 ...

  10. NLP中数据增强的综述,快速的生成大量的训练数据

    作者:amitness编译:ronghuaiyang 导读 深度学习视觉领域的增强方法可以很大程度上提高模型的表现,并减少数据的依赖,而NLP上做数据增强不像在图像上那么方便,但还是有一些方法的. 与 ...

最新文章

  1. 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
  2. 英国EE:启动TechCity 2.0 首期将部署LTE-Advanced Pro
  3. Go从入门到精通(一)go语言初识
  4. Java泛型总结---基本用法,类型限定,通配符,类型擦除
  5. dell电脑重装linux系统,重装系统出现问题,如何解决?
  6. 真香定律!一文带你搞懂Android多线程Handler,成功入职腾讯
  7. wordpress url index.php,WordPress对URL的路由解析过程详解
  8. android-手势-基础知识总结
  9. Wordpress网站渗透测试(进阶详细思路)
  10. 安信可IDE 1.5编译ESP8266 RTOS 3.0
  11. 大数据数据挖掘与云计算-认识大数据
  12. html右键打印,怎么在鼠标右键添加打印选项?
  13. 九章算术 五:《商功》
  14. 华为2018年服务器销售额,2018Q4华为服务器收入全球第三 同比增45.9%
  15. Unity3D教程:回合制游戏实现 1
  16. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏...
  17. 如何设置STM32 IO端口输入输出
  18. cipher java 安全_Java安全(未完待续)
  19. 无人便利店风口盛起,谁是最后赢家?
  20. java 实战机试题_Java项目实战(黑龙江联盟)-中国大学mooc-试题题目及答案

热门文章

  1. 使用lighttpd搭建轻量级web服务器详解
  2. Linux如何查看和设置DNS服务器地址
  3. python spark pyspark——朴素贝叶斯习题整理
  4. mac 外接双显示器
  5. php中空格怎么表示什么,HTML中的空格符号是什么
  6. 按键截屏功能源码流程讲解
  7. video在手机端自动播放、断点续播,列表播放等问题
  8. 微信分享、极简微信分享、thinkphp微信分享、laravel微信分享、3分钟完成微信分享
  9. 网页代码优化html标签,通过优化网页HTML代码提高网页访问速度
  10. 什么是 SEO ??? 对SEO的详细介绍