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


    如果要把训练好的模型拿来测试新的图片,那必须得要一个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"
    ')
            f.write('input:"data"
    ')
            f.write('input_dim:1
    ')
            f.write('input_dim:3
    ')
            f.write('input_dim:28
    ')
            f.write('input_dim:28
    ')
            f.write(str(create_deploy()))
    if __name__ == '__main__':
        write_deploy()
    复制代码

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

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

  • 相关阅读:
    引用数据类型:字符串和数组
    java流程控制
    java基本类型-八大基本数据类型(4类8种)
    Java标识符
    Java注释
    虚拟环境管理virtualenv
    pipenv管理模块和包
    有关线程的说法?
    TCP三次握手的序列号和确认号的计算
    jenkins的安装
  • 原文地址:https://www.cnblogs.com/niulang/p/8989289.html
Copyright © 2020-2023  润新知