caffe 学习笔记-prototxt文件定义与读取
2017-08-15 12:36
489 查看
caffe中,模型定义在.prototxt文件中,文件中定义了每层的结构信息.
定义输入:
也就是定义input名为data,batch_size=1, num_channels=3, input_height=900, input_width=900
定义网络层,以卷积层为例:
name为该层的名字,可以自己定义.type表示该层的特性,如relu,type=ReLU,pooling,type=Poolin,这里为卷积层,因此type=Convolution,bottom表述该层的输入,这里输入为input data. top表示该层的输出output data,*_param定义该层的参数信息,如
convolution_param {
}
表示该卷积层卷积核大小为3×3,output channels 为64,表示这层卷积层有64个卷积核.
caffe中,通过caffe.Net()函数读取模型文件,
加载已经训练好的模型:
caffe中网络层的输出值,以及输入图像,标签都是以blob形式保存,要获得这些数据,可以通过net.blobs的得到,例如我们要获取输入data:
每个blob保存了data和及其gradient(diff),shape,总的参数个数(count)等信息.参数获取,例如要获得输入data的shape:
batch_size=1, num_channels=3, input_height=900, input_width=900,也就是我们在模型文件中定义的输入格式.
获取变量值,也就是每层要学习的参数,例如每层的卷积核权重w,b:
例如我们要获得conv1_1层的卷积和权重w,b:
conv1_1中卷积核大小为3×3,输入channels 为3,输出channels为64,因此权重矩阵w大小为64×3×3×3.
以上实验完整代码如下:
dilation8_pascal_voc_deploy.prototxt 为模型文件,dilation8_pascal_voc.caffemodel为训练好的模型.
定义输入:
input: "data" input_shape { dim: 1 dim: 3 dim: 900 dim: 900 }
也就是定义input名为data,batch_size=1, num_channels=3, input_height=900, input_width=900
定义网络层,以卷积层为例:
layer { name: "conv1_1" type: "Convolution" bottom: "data" top: "conv1_1" convolution_param { num_output: 64 kernel_size: 3 } }
name为该层的名字,可以自己定义.type表示该层的特性,如relu,type=ReLU,pooling,type=Poolin,这里为卷积层,因此type=Convolution,bottom表述该层的输入,这里输入为input data. top表示该层的输出output data,*_param定义该层的参数信息,如
convolution_param {
num_output: 64 kernel_size: 3
}
表示该卷积层卷积核大小为3×3,output channels 为64,表示这层卷积层有64个卷积核.
caffe中,通过caffe.Net()函数读取模型文件,
import caffe net = caffe.Net(dataset.model_path)
加载已经训练好的模型:
net = caffe.Net(model_path, pretrained_path,caffe.TEST)
caffe中网络层的输出值,以及输入图像,标签都是以blob形式保存,要获得这些数据,可以通过net.blobs的得到,例如我们要获取输入data:
net.blobs['data']
每个blob保存了data和及其gradient(diff),shape,总的参数个数(count)等信息.参数获取,例如要获得输入data的shape:
input_dims = net.blobs['data'].shape batch_size, num_channels, input_height, input_width = input_dims
batch_size=1, num_channels=3, input_height=900, input_width=900,也就是我们在模型文件中定义的输入格式.
获取变量值,也就是每层要学习的参数,例如每层的卷积核权重w,b:
params=net.params
例如我们要获得conv1_1层的卷积和权重w,b:
w1=net.params['conv1_1'][0].data b1=net.params['conv1_1'][1].data
conv1_1中卷积核大小为3×3,输入channels 为3,输出channels为64,因此权重矩阵w大小为64×3×3×3.
以上实验完整代码如下:
import sys caffe_root='/home/program/caffe' sys.path.insert(0, caffe_root + '/python') import caffe model_path='models/dilation8_pascal_voc_deploy.prototxt' pretrained_path='pretrained/dilation8_pascal_voc.caffemodel' net = caffe.Net(model_path,pretrained_path,caffe.TEST) blobs=net.blobs input_dims = blobs['data'].shape batch_size, num_channels, input_height, input_width = input_dims params=net.params w1=net.params['ct_conv5_1'][0].data b1=net.params['ct_conv5_1'][1].data
dilation8_pascal_voc_deploy.prototxt 为模型文件,dilation8_pascal_voc.caffemodel为训练好的模型.
相关文章推荐
- caffe学习笔记:caffe网络模型文件(.prototxt)layer与layers区别
- caffe源码学习——用python定义网络时,源代码生成prototxt文件的原理
- c++学习笔记—c++对txt文件的读取与写入
- c++学习笔记—c++对txt文件的读取与写入
- 深度学习caffe平台--train_val.prototxt文件中激活层(Activiation Layers)及参数及参数详解
- Caffe 中关于 LetNet-5 网络的定义文件 lenet.prototxt 解析
- caffe将用训练好的caffemodel和train_val.prototxt文件分类新的一张图片-上篇--caffe学习(6)
- 深度学习caffe平台--train_val.prototxt文件中激活层(Activiation Layers)及参数及参数详解
- 深度学习caffe平台--train_val.prototxt文件中视觉层(Vision Layers)层及参数详解
- java学习笔记 读取pdf文件并写成txt文件输出
- 深度学习caffe平台--train_val.prototxt文件中数据层及参数详解
- caffe中train_val.prototxt文件和deploy.prototxt文件区别和转换--caffe学习(14)
- 薛开宇学习笔记二之总结笔记--caffe imagenet训练中train_val.prototxt中数据层及其参数设置
- caffe将用训练好的caffemodel和train_val.prototxt文件分类新的一张图片-下篇--caffe学习(7)
- 深度学习caffe平台--train_val.prototxt文件中数据层及参数详解
- 【学习笔记】C#文件流联系|读取文件、追加Txt
- java学习笔记_将中文字符导出txt文档_从txt文档读取文件
- 黑马程序员之C#学习笔记:C#读取txt文件的方法
- caffe中的Solver、SGDSolver、 solver.prototxt 学习笔记
- caffe学习笔记10-solver.prototxt学习