2016-09-29 138 views
1

我正在使用Lasagne + Theano創建一個ResNet,並且正在努力使用DenseLayer。如果我使用http://lasagne.readthedocs.io/en/latest/modules/layers/dense.html上的示例,它可以工作。lasagne.layers.DenseLayer:「__init __()至少需要3個參數」

l_in = InputLayer((100, 20)) 
l1 = DenseLayer(l_in, num_units=50) 

但是,如果我想使用它在我的項目:

#other layers 

resnet['res5c_branch2c'] = ConvLayer(resnet['res5c_branch2b'], num_filters=2048, filter_size=1, pad=0, flip_filters=False) 
resnet['pool5'] = PoolLayer(resnet['res5c'], pool_size=7, stride=1, mode='average_exc_pad', ignore_border=False) 
resnet['fc1000'] = DenseLayer(resnet['pool5'], num_filter=1000) 

Traceback (most recent call last):File "convert_resnet_101_caffe.py", line 167, in <module> 
resnet['fc1000'] = DenseLayer(resnet['pool5'], num_filter=1000)TypeError: __init__() takes at least 3 arguments (2 given) 

回答

1

DenseLayer有兩個位置參數:incoming, num_units。你是這樣的實例是:

DenseLayer(resnet['pool5'], num_filter=1000) 

注意,這是比示例代碼不同:

DenseLayer(l_in, num_units=50) 

既然你傳遞關鍵字參數是num_units作爲第二個參數,我認爲num_filter被解釋爲**kwargsDenseLayer is still wanting that num_units`參數之一,並且因爲您沒有提供錯誤而引發錯誤。

您可以num_filter之前提供num_units說法,或者如果這僅僅是一個錯字,改變num_filternum_units。 (第二種選擇對我來說似乎更有可能,因爲儘管我對您使用的庫不熟悉,但在鏈接的文檔中沒有提及num_filter,儘管某些類似乎需要num_filters--注意尾隨s - 論據。)

+1

謝謝,我沒有看到:)這是一個錯字 – TobSta

相關問題