前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >卷积神经网络(三) ——inception网络、迁移学习

卷积神经网络(三) ——inception网络、迁移学习

作者头像
用户1327360
发布2018-03-29 17:00:16
1.6K0
发布2018-03-29 17:00:16
举报

卷积神经网络(三)

——inception网络、迁移学习

(原创内容,转载请注明来源,谢谢)

一、Inception网络

1、简介

前面的文章中,有各种的卷积模型可以选择,而具体如何选择各种模型,实际上也可以让机器自动选择。

下面是一个前一层的输出结果,为28*28*192的数据,可以同时经过1*1、3*3、5*5、池化层四种处理,得到输出的结果,并且把输出结果进行拼接。

2、卷积优化

实际上在数据量大的时候,卷积的计算量也很大(虽然比全连接层已经好了很多)。28*28*192的数据,经过5*5的卷积,计算量约需要1.2亿次乘法。

下面考虑另一种方式,在5*5卷积之前,加入一个1*1卷积,先把上一层的输出进行压缩,然后再进行5*5的卷积,如下图所示,计算量约1240万次,是直接进行卷积的计算量的1/10。

这里的输入输出的维度都是一样的,只不过中间加了一层1*1的卷积,减少了计算量,这里的1*1卷积称为瓶颈层(bottleneck layer)。

经过研究人员的分析,这种瓶颈层虽然压缩了上一层的输出,但是不会造成很大的损失,而且减少了运算。

3、inception模块

因此,实际上的inception模块,就是同时进行了各种类型的卷积,包括池化,把计算结果进行信道的连接。

二、迁移学习

迁移学习,即把现有的神经网络,进行细微的改造训练,以得到自己想要的分类器的结果。

假设现有一个已经训练好的深度学习神经网络(例如GitHub开源等),现在需要一个三分类器。

1、训练数据量不足

当训练数据很少,则可以只改造现有网络的输出层,自己训练一个softmax,把前面所有的层当做黑盒,不进行训练,只使用训练结果。

为了计算速度更快,可以把前面的输出结果存储,作为输入层,这样只需要训练2层的神经网络即可。

2、训练数量较多

当训练数据较多,则除了替换softmax,还可以在softmax之前,加入几层的隐藏层,这样训练效果更好。

3、训练数据非常大量

当拥有非常大量的训练数据,则可以只把现有的网络当做初始化,而自己完全训练一个神经网络。

迁移学习的优点,在于可以合理利用现有的网络。当神经网络非常大型时,前面几层的训练通常是可以共用的,这也是迁移学习可以实现的原理。

对于计算机视觉,需要大量的数据,而且运算量很大,合理利用现有训练好的网络,进行迁移学习,可以提高工作效率。

三、数据扩充

数据扩充,这个之前提过,这里再简单说一下。

数据扩充的目的,是为了增加训练数据。常用的方法有:对图片进行镜像、随机修剪、旋转、扭曲、色彩转换(运用PCA增强法)等。

实际工作的时候,可以一边用程序处理图片,一边进行后续的训练。具体做法,可以用多线程,部分线程读取硬盘的图片,并进行上述的镜像、旋转等工作,处理完成一部分图片后,小批量的把图片传给训练参数的线程;另一部分线程,则读取图片,并且进行参数的训练。

——written by linhxx 2018.03.10

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决胜机器学习 微信公众号,前往查看

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

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

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