您的位置:首页 > Web前端

caffe 学习笔记-prototxt文件定义与读取

2017-08-15 12:36 489 查看
caffe中,模型定义在.prototxt文件中,文件中定义了每层的结构信息.

定义输入:

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为训练好的模型.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐