当前位置: 代码迷 >> python >> theano batched_dot表现异常
  详细解决方案

theano batched_dot表现异常

热度:100   发布时间:2023-06-16 14:13:06.0

通过使用theano的batched_dot,但我发现了一些对我来说似乎是错误的东西。 numpy数组的转置会使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})

我不知道batched_dot是如何工作的,但是转置数组的步幅可能会把它扔掉

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创建一个view ,更改形状,步幅和顺序(到F ),而不复制数据。

a_transposed_np.T.copy()是否起作用?