2017-02-16 14 views
0

theanoのbatched_dotを使用すると、バグのようなものが見つかりました。 numpyの配列を転置すると、batched_dotは失敗します。たとえ結果として得られる形状が正しいとしても。私のmweは以下の通りです。私の質問:最後の行が動作し、これがバグでしょうか?theano batched_dotが予期せぬ動作をする

私は現在、Theano-0.9.0b1である最新のインストールを使用しています。 必要に応じて、これをgithubで問題にすることができます。

ありがとうございました。

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}) 

答えて

0

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.transposeFに形状、進歩と秩序を(変更、viewを作成し、私はどのようにbatched_dot作品を知りませんが、あなたの転置配列の進歩は、それをオフに投げることもできます)、データをコピーすることはありません。

a_transposed_np.T.copy()は機能しますか?

+0

ありがとうございます、それは確かに進歩です。私はちょうど他の人に同じ問題があることを知った[リンク](https://github.com/fchollet/keras/issues/2742#issuecomment-219763042) – FBerendsen

関連する問題