2017-02-16 3 views
0

Durch die Verwendung von theano's batched_dot, aber ich habe etwas gefunden, das für mich wie ein Fehler aussieht. Die Transposition des numpy-Arrays führt dazu, dass batched_dot fehlschlägt, auch wenn die resultierende Form korrekt ist. Unten ist meine Mwe. Meine Fragen: Sollte die letzte Zeile funktionieren und ist das ein Fehler?theano batched_dot verhält sich unerwartet

Ich benutze die bahnbrechende Installation, die derzeit Theano-0.9.0b1 ist. Bei Bedarf kann ich dies auf github ein Problem machen.

Danke.

import theano.tensor as T 
import numpy as np 
a = T.dtensor3('a') 
b = T.dmatrix('b') 

a_np = np.zeros((4,2,2)) 
b_np = np.zeros((4,2)) 

bd = T.batched_dot(a,b) 
ok = bd.eval({a:a_np,b:b_np}) 

a_transposed_np = np.zeros((2,2,4)) 
not_ok = bd.eval({a:a_transposed_np.T,b:b_np}) 

Antwort

0

Ich weiß nicht, wie batched_dot funktioniert, aber die Fortschritte Ihrer transponierten Matrix kann es weg werfen

In [128]: a_transposed_np = np.zeros((2,2,4)) 
In [129]: a_transposed_np.shape 
Out[129]: (2, 2, 4) 
In [130]: a_transposed_np.T.shape 
Out[130]: (4, 2, 2) 
In [131]: a_transposed_np.strides 
Out[131]: (64, 32, 8) 
In [132]: a_transposed_np.T.strides 
Out[132]: (8, 32, 64) 
In [133]: np.zeros((4,2,2)).strides 
Out[133]: (32, 16, 8) 

np.transpose eine view erzeugt, verändert sich die Form, Fortschritte und Ordnung (bis F), ohne die Daten zu kopieren.

Funktioniert a_transposed_np.T.copy()?

+0

Danke, es ist die Schritte, in der Tat. Ich habe gerade festgestellt, dass andere Leute das gleiche Problem hatten [link] (https://github.com/fchollet/keras/issues/2742#issuecomment-219763042) – FBerendsen

Verwandte Themen