首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lasagne.layers.DenseLayer:"__init__()至少包含3个参数“

lasagne.layers.DenseLayer:"__init__()至少包含3个参数“
EN

Stack Overflow用户
提问于 2016-09-29 15:25:24
回答 1查看 277关注 0票数 1

我正在使用Lasagne+Theano创建一个ResNet,并且正在与DenseLayer的使用进行斗争。如果我在http://lasagne.readthedocs.io/en/latest/modules/layers/dense.html上使用这个例子,它就能工作。

代码语言:javascript
复制
l_in = InputLayer((100, 20))
l1 = DenseLayer(l_in, num_units=50)

但如果我想在我的项目中使用它:

代码语言:javascript
复制
#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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-29 15:34:23

DenseLayer采用两个位置参数:incoming, num_units。您正在像这样实例化它:

代码语言:javascript
复制
DenseLayer(resnet['pool5'], num_filter=1000)

请注意,这与示例代码不同:

代码语言:javascript
复制
DenseLayer(l_in, num_units=50)

由于您传递的关键字参数不是num_units作为第二个参数,所以我认为num_filter被解释为**kwargsDenseLayer is still wanting thatnum_units`参数之一,并且由于不提供它而引发错误。

您可以在num_units之前提供一个num_filter参数,或者如果这只是一个错误,则将num_filter更改为num_units。(对于我来说,第二个选项似乎更有可能,因为虽然我不熟悉您正在使用的库,但在您链接的文档中没有看到任何对num_filter的引用,尽管有些类似乎采用了num_filters -注意后面的s -参数。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39774325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档