第九周
本节内容:
- Inception的作用与结构全解析
- 安装GPU版本的tensorflow
- 在类似模型的基础上训练自己的一个图片分类的模型
- 从头到尾训练一个自己的模型
Inception的作用与结构全解析:
http://blog.csdn.net/u010402786/article/details/52433324

为什么一个5*5的卷积核可以由两个3*3的卷积核替代?
由于3*3卷积或者5*5卷积在几百个filter的卷积层上做卷积操作时相当耗时,所以1*1卷积在3*3卷积或者5*5卷积计算之前先降低维度。
那么,1*1卷积的主要作用有以下几点:
1、降维( dimension reductionality )。比如,一张500 * 500且厚度depth为100 的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20。
2、加入非线性。卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力;
batchnormal做了两件事。1)输入归一化x_norm=(x-u)/std,其中u和std是个累计计算的均值和方差。2)y=alpha*x_norm+bet...
BN本质上解决的是反向传播过程中的梯度问题。
详细点说,反向传播时经过该层的梯度是要乘以该层的参数的,即前向有:
那么反向传播时便有:
那么考虑从l层传到k层的情况,有:
上面这个 便是问题所在。因为网络层很深,如果
大多小于1,那么传到这里的时候梯度会变得很小比如
;而如果
又大多大于1,那么传到这里的时候又会有梯度爆炸问题 比如
。BN所做的就是解决这个梯度传播的问题,因为BN作用抹去了w的scale影响。
具体有:
(
) =
(
)
那么反向求导时便有了:
可以看到此时反向传播乘以的数不再和 的尺度相关,也就是说尽管我们在更新过程中改变了
的值,但是反向传播的梯度却不受影响。更进一步:
即尺度较大的 将获得一个较小的梯度,在同等的学习速率下其获得的更新更少,这样使得整体
的更新更加稳健起来。
总结起来就是BN解决了反向传播过程中的梯度问题(梯度消失和爆炸),同时使得不同scale的 整体更新步调更一致。
安装GPU版本的tensorflow:
https://developer.nvidia.com/cuda-downloads

主要讲的是windows版本的安装,Linux安装可寻找一些其他的流程看看












训练自己的一个图片分类的模型:(3中方法)
第一种:从无到有,从头开始,利用大量的训练集进行训练
第二种:找到一个合适的模型,在已有的模型上做改变(已有模型卷积池化层训练好的参数固定不变,对最后一层重新训练)
第三种:和第二种方法类似,对卷积池化层参数进行微调(学习率降得比较低),重新训练最后一层,针对自己的要求做改变

以inception3为参考模型,建立自己的图片分类的模型:
进github把tensorflow下载下来---https://github.com/tensorflow/tensorflow(下载的时候要注意版本匹配问题-https://blog.csdn.net/xia_xia_mg/article/details/79947570)


数据集下载网址---http://www.robots.ox.ac.uk/~vgg/data/

按照下面的目录新建文件夹














retrain.py里面的函数有的需要更新一下









整体步骤:
步骤一:数据准备,准备自己要分类的图片训练样本。可以去 http://www.robots.ox.ac.uk/~vgg/data/ 下载数据集,下载之后保存到指定目录(我的文件夹路径及结构如下): E:\TensorFlow\retrain\data\train\
-->>animal
-->>flower
-->>car
步骤二:下载 retrain.py 程序:去 https://github.com/tensorflow/hub 下载,找到 retrain.py 文件放到 E:\TensorFlow\retrain\ 下
步骤三:下载inception-v3 模型 http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz
把压缩包存放到 E:\TensorFlow\inception_model 文件夹下,会自动寻找该压缩包。
步骤四:批处理命令文件 retrain.bat ,内容如下,把文件路径按自己的路径填写:



在 E:\TensorFlow\retrain\ 下新建一个名叫 bottleneck 的文件夹,用于存放批处理之后各个图片的.txt文件。 也就是图片输入到 inception-v3 模型之后,经过倒数第二层的输出值(运行retrain.bat 文件之后产生)。
步骤五:预测 prediction.py 程序,用于调用新生成的模型预测新数据的结果。
原文:https://blog.csdn.net/weixin_38663832/article/details/80555341
从头到尾训练一个自己的模型:
下载模型的安装包(https://github.com/tensorflow)


































浙公网安备 33010602011771号