2017-06-05 1 views
1

Ich arbeite mit Theano und Lasagne.TypeError: Inkompatible übertragbare Dimensionen. Erwartet (Falsch), erhalten (True)

Ich versuche, BatchNorm zu verwenden, und ich bekomme diesen Fehler. Kann mir bitte jemand sagen, was könnte falsch sein? Oder wenn ich den Namen der Variablen bekommen kann, die diese Abweichung hat?

Danke!

EDIT1:

Ich versuche, so etwas zu tun:

inputTarget = lasagne.layers.InputLayer(shape=(1,2,32, 32, 32), input_var=T.concatenate([tX, tY], axis=1)) 
network = lasagne.layers.SliceLayer(inputTarget, indices=slice(0, 1),axis=1) 
tX_new = lasagne.layers.get_output(network) 
network = lasagne.layers.batch_norm(network) 
tY_predicted = lasagne.layers.get_output(network) 
target= lasagne.layers.SliceLayer(inputTarget, indices=slice(1, None), axis=1) 

tY_new = lasagne.layers.get_output(target) 
loss = lasagne.objectives.squared_error(tY_predicted, tY_new).mean() 
updates = lasagne.updates.adam(loss, params, learning_rate=lr) 
train_fn = theano.function([tX, tY], [tY_predicted, loss, tY_new, tX_new], updates=updates) 

LOGS:

Traceback (most recent call last): 
    train_fn = theano.function([tX, tY], [tY_predicted, loss, tY_new, tX_new], updates=updates) 
    File "/lib/python2.7/site-packages/theano/compile/function.py", line 326, in function 
    output_keys=output_keys) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 449, in pfunc 
    no_default_updates=no_default_updates) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 219, in rebuild_collect_shared 
    cloned_v = clone_v_get_shared_updates(v, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 219, in rebuild_collect_shared 
    cloned_v = clone_v_get_shared_updates(v, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 93, in clone_v_get_shared_updates 
    clone_v_get_shared_updates(i, copy_inputs_over) 
    File "/lib/python2.7/site-packages/theano/compile/pfunc.py", line 114, in clone_v_get_shared_updates 
    allow_convert=False) 
    File "/lib/python2.7/site-packages/theano/sandbox/cuda/type.py", line 185, in filter_variable 
    str(self.broadcastable))) 
TypeError: Incompatible broadcastable dimensions. Expected (False,), got (True,). 

Nachdem die Variablen überprüft, weiß ich, dass die Code-Pausen für Mittelwert. Ich kann nicht herausfinden warum.

Antwort

0

Theano macht keine Sendung, wie numpy (automatisch). Sie müssen die zu übertragende Dimension manuell festlegen. Es gibt ein erstaunliches Tutorial über das Senden von here. Wenn Ihr Problem nach dem Durchlaufen dieses Tutorials weiterhin besteht, teilen Sie mir bitte Ihren Code und das vollständige Traceback mit, damit ich Ihnen weiterhelfen kann.

+0

Danke für die Antwort. Ich bin schon durch diese Seite gegangen. Nach der Überprüfung kann ich sehen, dass der Code für den Mittelwert bricht, aber ich verstehe nicht warum. Ich würde wirklich jede Hilfe schätzen. – RJain

+0

Was meinst du mit Pause für "gemein"? – Sentient07

+0

Ich meine, dass der Fehler kommt, wenn die Prüfung für "Mittelwert" durchgeführt wird. – RJain

Verwandte Themen