2016-03-23 45 views
4

我正在修改一個Caffe tutorial來實現一個神經網絡,但我正在努力確定某些pycaffe模塊的位置,以便查看某些函數定義。PyCaffe中定義的圖層模塊在哪裏

例如,本教程中提到:

import caffe 
from caffe import layers a L, params as P 
.... 
L.Convolution(bottom, kernel_size=ks, stride=stride, num_output=nout, pad=pad, group=group) 
L.InnerProduct(bottom, num_output=nout) 
L.ReLU(fc, in_place=True) 
... 

我在哪裏可以找到這些函數定義和我在哪裏可以看到其他類型的層是預先定義的?我看到layersparamsdefined here,但沒有提及類型(例如layers.Convolution等)。

我想知道的原因是因爲在pycaffe教程中還有其他prototxt參數,我希望能夠在生成原型文件時從Python中定義這些參數。這些包括,blob_lrinclude{phase: TRAIN}

回答

6

您可以添加blob_lrphase這樣的:

import caffe 
from caffe import layers a L, params as P 

ns = caffe.NetSpec() 
ns.conv = L.Convolution(bottom, convolution_param={'kernel_size':ks, 
                'stride':stride, 
                'num_output':nout, 
                'pad':pad, 
                'group':group}, 
           param=[{'lr_mult':1, 'decay_mult':1}, 
             {'lr_mult':2, 'decay_mult':0}], 
           include={'phase': caffe.TRAIN}) 

你可以看到在this answer一些例子。

+0

這是新的語法嗎?這很多與Caffe開發人員提供的教程不同。例如,將所有這些信息放入'convolution_param'字典 – marcman

+0

@marcman我不認爲它是新的,它是提供參數的稍微不同的方式。我發現這樣更清楚。通過這種方式提供「重複」類型的參數(例如,blob參數「lr_mult」)肯定更容易。 – Shai

+0

好的。我同意它似乎更清晰 – marcman