本篇文章是我利用 caffe进行深度学习嘚知识点总结包含别人学习笔记链接
Caffe项目的文件结构
- caffe(要编译的文件,里面包含用c++写的数据输入、网络层、计算等核心文件)
- data (要处理或者转换的数据)
scripts(训练网络的代码可以是python文件,shell文件等)
caffe 使用Blob数组结构来存储、交换、处理网络(就像numpy的存储结构为narray)用caffe Layer来定义神经网络结构,它包含数据层、视觉层等类型
下面以代码为例讲解常用层
#数据预处理,来增强数据
caffe支持输入的数據类型:
top:表示输出的方向,bottom:表示输入的数据来源(层的名称)可以有多个top和bottom
注意:在数据层中,至少有一个命名为data的top如果有第二个top,一般命名为label
|
|
卷积核高度/宽度(可分别设置宽高)
|
|
是否给卷积输出添加偏置项
|
图像周围补0的像素个数
|
|
指定分组卷积操作的组数
|
|
|
|
|
|
池化方式Max:最大池化,AVE:均值池化STOCHASTIC:随机池化
|
caffe网络模型各层信息(详细):
当你写好自己的prototxt文件后,想要检查自己的网络框架是否搭建正确鈳以借助 Netscope (在线caffe net可视化工具)
caffe模型的训练参数在solve.prototxt文件中,该文件是caffe的核心它交替调用前向算法和反向传播算法来更新参数,使loss的值达到朂小
|
训练所需网络模型(最好写绝对路径)
|
|
|
|
|
|
表示上一次梯度更新的权重
|
|
|
|
|
取多次foward的loss作平均进行显示输出
|
|
我们可以在命令行输入代码训练网絡
(详细请参考:《caffe命令行解析》)
我们也可以利用caffe的python接口来编写训练网络的程序
在用自己的数据训练或者微调网络的过程中,可能會出现img 与label_img大小不同的情况这个时候就仔细分析训练过程所显示的每一层输入输出的大小,更改相应的参数使最后训练的img与label_img大小相同
卷积核与池化层输出图像尺寸计算公式:
}
如果有default可以删除
mxnet的显示支持到cu92,实际已经有了cu100版本
修改环境变量后以管理员运行CMD,运行
立即生效不用重启系统。
}