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"\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復制一份,修改相應的地方就可以了,更加方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM