lasagne.layers.DenseLayer: "__init__() 至少需要 3 个参数"
lasagne.layers.DenseLayer: "__init__() takes at least 3 arguments"
我正在使用 Lasagne+Theano 来创建一个 ResNet,并且正在努力使用 DenseLayer。如果我在 http://lasagne.readthedocs.io/en/latest/modules/layers/dense.html 上使用示例,它会起作用。
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)
由于您传递的关键字参数 not 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
- 参数。)
我正在使用 Lasagne+Theano 来创建一个 ResNet,并且正在努力使用 DenseLayer。如果我在 http://lasagne.readthedocs.io/en/latest/modules/layers/dense.html 上使用示例,它会起作用。
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)
由于您传递的关键字参数 not 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
- 参数。)