lasagne.layers.DenseLayer:“__init __()至少需要3个参数”
问题描述:
我正在使用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)
答
DenseLayer
有两个位置参数:incoming, num_units
。你是这样的实例是:
DenseLayer(resnet['pool5'], num_filter=1000)
注意,这是比示例代码不同:
DenseLayer(l_in, num_units=50)
既然你传递关键字参数是不num_units
作为第二个参数,我认为num_filter
被解释为**kwargs
和DenseLayer is still wanting that
num_units`参数之一,并且因为您没有提供错误而引发错误。
您可以num_filter
之前提供num_units
说法,或者如果这仅仅是一个错字,改变num_filter
到num_units
。 (第二种选择对我来说似乎更有可能,因为尽管我对您使用的库不熟悉,但在链接的文档中没有提及num_filter
,尽管某些类似乎需要num_filters
--注意尾随s
- 论据。)
谢谢,我没有看到:)这是一个错字 – TobSta