Theanoとlasagneを使ってニューラルネットワークを構築しているのですが、BatchNormを使うとエラーが出ます。
まず構築部分のコードは以下のようにしています。
Python
1from lasagne.layers import batch_norm 2 3l_in = lasagne.layers.InputLayer( 4 shape=(None, 1, input_height, input_width), 5 ) 6 7 l_hid = lasagne.layers.DenseLayer( 8 l_in, 9 num_units=20, 10 # nonlinearity=lasagne.nonlinearities.tanh, 11 nonlinearity=lasagne.nonlinearities.rectify, 12 # W=lasagne.init.Normal(.0201), 13 W=lasagne.init.Normal(.01), 14 b=lasagne.init.Constant(0) 15 ) 16 17 l_hid_b = batch_norm(l_hid)#これが無いと通る 18 19 l_out = lasagne.layers.DenseLayer( 20 l_hid_b, 21 num_units=output_length, 22 nonlinearity=lasagne.nonlinearities.softmax, 23 # W=lasagne.init.Normal(.0001), 24 W=lasagne.init.Normal(.01), 25 b=lasagne.init.Constant(0) 26 ) 27
上記のbatch_normの部分を入れると以下のようなエラーが出ます。これは何が問題でしょうか?
Traceback (most recent call last):
File "launcher.py", line 167, in <module>
main()
File "launcher.py", line 146, in main
pg_su.launch(pa, pg_resume, render, repre='image', end='all_done')
File "/Users/tm/Google ドライブ/Python/DQN/deepDC4/pg_su.py", line 38, in launch
pg_learner = pg_network.PGLearner(pa)
File "/Users/tm/Google ドライブ/Python/DQN/deepDC4/pg_network.py", line 111, in init
grads = T.grad(loss, params)
File "/Users/tm/Library/Python/3.6/lib/python/site-packages/theano/gradient.py", line 589, in grad
handle_disconnected(elem)
File "/Users/tm/Library/Python/3.6/lib/python/site-packages/theano/gradient.py", line 576, in handle_disconnected
raise DisconnectedInputError(message)
theano.gradient.DisconnectedInputError:
Backtrace when that variable is created:
File "launcher.py", line 146, in main
pg_su.launch(pa, pg_resume, render, repre='image', end='all_done')
File "/Users/tm/Google ドライブ/Python/DQN/deepDC4/pg_su.py", line 38, in launch
pg_learner = pg_network.PGLearner(pa)
File "/Users/tm/Google ドライブ/Python/DQN/deepDC4/pg_network.py", line 81, in init
build_pg_network(pa.network_input_height, pa.network_input_width, pa.network_output_dim)
File "/Users/tm/Google ドライブ/Python/DQN/deepDC4/pg_network.py", line 373, in build_pg_network
l_hid_b = batch_norm(l_hid)
File "/usr/local/lib/python3.6/site-packages/lasagne/layers/normalization.py", line 372, in batch_norm
layer = BatchNormLayer(layer, name=bn_name, **kwargs)
File "/usr/local/lib/python3.6/site-packages/lasagne/layers/normalization.py", line 263, in init
batch_norm_stat=True)
File "/usr/local/lib/python3.6/site-packages/lasagne/layers/base.py", line 234, in add_param
param = utils.create_param(spec, shape, name)
File "/usr/local/lib/python3.6/site-packages/lasagne/utils.py", line 381, in create_param
spec = theano.shared(spec, broadcastable=bcast)
あなたの回答
tips
プレビュー