2017-02-27 21 views
1

我使用caffe.NetSpec在Python定義和使用下面的代碼架構出口:兩人在train.prototxt頂斑點使用Python中caffe.NetSpec()時

conv1_1 = L.Convolution(data,top='conv1_1',name='conv1_1', 
         convolution_param= 
         {'kernel_size':3,'num_output':64,'pad':1}, 
         param=[{'lr_mult':1, 'decay_mult':1}, 
           {'lr_mult':2,'decay_mult':0}]) 

但是,在生成時train.protxt,圖層中出現兩個頂部斑點如下:

layer { 
name: "conv1_1" 
type: "Convolution" 
bottom: "Data1" 
top: "Convolution1" 
top: "conv1_1" 
param { 
    lr_mult: 1 
    decay_mult: 1 
} 
param { 
    lr_mult: 2 
    decay_mult: 0 
} 
convolution_param { 
    num_output: 64 
    pad: 1 
    kernel_size: 3 
    } 
} 

這是怎麼回事? 謝謝

+0

@Shai:但是我希望top的名字是'conv1_1'。 – Saeed

+0

@Shai:我只是堆疊一堆圖層,然後將最後一層添加到'to_proto'函數。這是一個非常深的網絡。你需要所有的代碼?請注意,所有圖層都會發生相同的行爲。 – Saeed

回答

1

如何使用NetSpec()對象?

import caffe 

ns = caffe.NetSpec() # use this object to store the layers 
ns.data, ns.label = L.Data(name='data', ntop=2, 
          data_param={'source':'', 'batch_size': 32}) 
ns.conv1_1 = L.Convolution(ns.data, name='conv1_1', 
        convolution_param= 
        {'kernel_size':3,'num_output':64,'pad':1}, 
        param=[{'lr_mult':1, 'decay_mult':1}, 
          {'lr_mult':2,'decay_mult':0}]) 
print str(ns.to_proto()) # print the net stored in ns object 
+1

這有效!謝謝! – Saeed