码迷,mamicode.com
首页 > 编程语言 > 详细

caffe的python接口学习(5):生成deploy文件

时间:2016-07-19 20:39:35      阅读:801      评论:0      收藏:0      [点我收藏+]

标签:

如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.prototxt文件,这个文件实际上和test.prototxt文件差不多,只是头尾不相同而也。deploy文件没有第一层数据输入层,也没有最后的Accuracy层,但最后多了一个Softmax概率层。

这里我们采用代码的方式来自动生成该文件,以mnist为例。

deploy.py

# -*- coding: utf-8 -*-

from caffe import layers as L,params as P,to_proto
root=/home/xxx/
deploy=root+mnist/deploy.prototxt    #文件保存路径

def create_deploy():
    #少了第一层,data层
    conv1=L.Convolution(bottom=data, kernel_size=5, stride=1,num_output=20, pad=0,weight_filler=dict(type=xavier))
    pool1=L.Pooling(conv1, pool=P.Pooling.MAX, kernel_size=2, stride=2)
    conv2=L.Convolution(pool1, kernel_size=5, stride=1,num_output=50, pad=0,weight_filler=dict(type=xavier))
    pool2=L.Pooling(conv2, pool=P.Pooling.MAX, kernel_size=2, stride=2)
    fc3=L.InnerProduct(pool2, num_output=500,weight_filler=dict(type=xavier))
    relu3=L.ReLU(fc3, in_place=True)
    fc4 = L.InnerProduct(relu3, num_output=10,weight_filler=dict(type=xavier))
    #最后没有accuracy层,但有一个Softmax层
    prob=L.Softmax(fc4)
    return to_proto(prob)
def write_deploy(): 
    with open(deploy, w) as f:
        f.write(name:"Lenet"\n)
        f.write(input:"data"\n)
        f.write(input_dim:1\n)
        f.write(input_dim:3\n)
        f.write(input_dim:28\n)
        f.write(input_dim:28\n)
        f.write(str(create_deploy()))
if __name__ == __main__:
    write_deploy()

运行该文件后,会在mnist目录下,生成一个deploy.prototxt文件。

这个文件不推荐用代码来生成,反而麻烦。大家熟悉以后可以将test.prototxt复制一份,修改相应的地方就可以了,更加方便。

caffe的python接口学习(5):生成deploy文件

标签:

原文地址:http://www.cnblogs.com/denny402/p/5685818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!