前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >21个项目玩转深度学习 学习笔记(2)

21个项目玩转深度学习 学习笔记(2)

作者头像
发布2018-09-03 18:09:31
6820
发布2018-09-03 18:09:31
举报
文章被收录于专栏:WD学习记录WD学习记录

Tensorflow中数据读取的基本机制。

事实上,必须先读入数据后才能进行计算,假设读入用时0.1s,计算用时0.9秒,那么没过1s,GPU都会有0.1s无事可做,大大降低了运算的效率。

解决这个问题的方法将读入数据和计算分别放在两个线程中,读取线程不断地将文件系统中的图片读入一个内存的队列中,而负责计算的是另一个线程,计算需要数据时,直接从内存队列中读取就可以了。这样可以解决GPU因为I/O而空闲的问题。

在Tensorflow中,为了方便管理,在内存队列前又添加了一层所谓的“文件名队列”

机器学习中一个概念是epoch,对于一个数据集来讲,运行一个epoch就是将这个数据集中的图片全部计算一遍。如果一个数据集中有三张图片A.JPG、B.JPG、C.JPG,那么对运行一个epoch就是指对A、B、C三张图片都计算一遍。两个epoch就是指先对A、B、C各计算一遍,然后再全部计算一遍,也就是说每张图片都计算了两遍。

Tensorflow使用“文件名队列+内存队列”双队列的形式读入文件,可以很好地管理epoch。假定要运行一个epoch,那么在文件名队列中把A、B、C各放入一次,在之后标注队列结束。程序运行后,内存队列依次读入A、B、C,再尝试读入,就检测到了结束,自动抛出一个异常,结束程序。这是Tensorflow种读取数据的基本机制。如果要运行2个epoch而不是1个epoch,在文件名队列中将A、B、C依次放入两次再标记结束就可以了。

对于文件名队列,使用tf.train.string_input_producer函数,这个函数需要传入一个文件名list,系统会自动将它转为一个文件名队列。

此外,tf.train.string_input_producer还有两个重要参数,一个是num_epochs,它就是之前提到的epoch数,另外一个shuffle,shuffle是指在一个epoch内文件的顺序是否被打乱,若设置shuffle=False,每个epoch中数据仍然按照A、B、C的顺序进入文件名队列。如果设置shuffle=True,那么在一个epoch内,数据的前后顺序就会被打乱。

在Tensorflow中,内存队列不需要自己建立,只需要使用reader对象从文件名队列中读取数据就可以了。

还有另一个函数tf.train.start_queue_runners。在使用tf.train.string_input_prodecer创建文件名队列后,整个系统其实还处于停滞状态,也就是说文件名并没有真正被加入队列中,如果此时开始计算,因为内存队列中什么也没有,计算单元就会一直等待,导致整个系统被阻塞。

使用tf.train.start_queue_runners之后,才会启动填充队列的线程,这时系统就不会再停滞了。此后,计算单元就可以拿到数据并进行计算,整个程序运行起来。

数据增强

深度学习通常会要求拥有充足数量的训练样本,一般来说,数据的总量越多,训练得到的模型效果会越好。

对于图像类型的训练数据,所谓的数据增强(Data Augmentation)方法是指利用平移、缩放、颜色等变换,人工增大训练集样本的个数,从而获得更充足的训练数据,使得模型训练的效果更好。

常见的图像数据增强的方法如下:

  • 平移:将图像在一定尺度范围内平移
  • 旋转:将图像在一定角度范围内旋转
  • 翻转:水平翻转或者上下翻转图像
  • 裁剪:在原有图像上裁剪出一块
  • 缩放:将图像在一定尺度内放大或缩小
  • 颜色变换:对图像的RGB颜色空间进行一些变换
  • 噪声扰动:给图像加入一些人工生成的噪声

使用数据增强的方法的前提是,这些数据增强方法不会改变图像的原有标签。

在训练的时候,常常想知道损失的变化,以及各层的训练状况。Tensorflow提供了一个可视化工具TensorBoard可以非常方便地观察损失的变化曲线,还可以观察训练速度等其他日志信息,达到实时监控训练过程的目的。

深度残差模型的优势在于使用了跳过链接,让神经网络从拟合F(x)变成拟合F(x)-x。残差比原始函数更容易学习,也更适合深层模型迭代,因此,即使训练非常深的神经网络也不会发生非常严重的过拟合。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据增强
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档