2016-09-29 4 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) 

しかし、私は私のプロジェクトでそれを使用する場合:incoming, num_units

#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、2つの位置引数を取ります。あなたは2番目の引数としてないnum_unitsあるキーワード引数を渡しているので、私は、

DenseLayer(l_in, num_units=50) 

:これはサンプルコードは異なることに

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

注:あなたはこのようにそれをインスタンス化していますnum_filter**kwargsDenseLayer is still wanting that num_unitsのいずれかの引数として解釈されていると考えて、それを入力しないのでエラーが発生します。

num_filterの前にnum_units引数を指定するか、または単に入力ミスであった場合は、num_filternum_unitsに変更します。 (2番目のオプションは私が使用しているライブラリに精通していないにもかかわらず、あなたがリンクしたドキュメントにnum_filterへの参照はありません。一部のクラスはnum_filtersになります。 s - 引数)

+1

ありがとう、私はそれを見ていない:)それはタイプミス – TobSta