使用输入的各个元素theano函数



我正在尝试构建一个以欧拉角为输入的 T.vector的theano函数,并返回与那些欧拉角相对应的方向向量。首先,我采用矢量每个元素的罪恶和余弦,然后将它们排列为旋转矩阵。最后,我将定向向量[1, 0, 0]乘以此旋转矩阵。我遇到的问题是,我无法将这个numpy数组乘以旋转矩阵。

这是我的代码:

import theano.tensor as T
import theano
import numpy as np
euler_angles = T.vector('euler_angles', dtype=theano.config.floatX)
origin_vec = theano.shared(np.asarray([1, 0, 0],
                                      dtype=theano.config.floatX))
sinx = T.sin(euler_angles[0])
siny = T.sin(euler_angles[1])
sinz = T.sin(euler_angles[2])
cosx = T.cos(euler_angles[0])
cosy = T.cos(euler_angles[1])
cosz = T.cos(euler_angles[2])
# Create the rotation matrix
rot_matrix = np.asarray([
        [cosy*cosz, -1*sinz, cosz * siny],
        [(sinx*siny)+(cosx*cosy*sinz), cosx*cosz, (-1*cosy*sinx)+(cosx*siny*sinz)],
        [(-1*cosx*siny)+(cosy*sinx*sinz), cosz*sinx, (cosx*cosy)+(sinx*siny*sinz)]
    ])
vector = T.dot(origin_vec, rot_matrix)
get_vector = theano.function([euler_angles], vector)

二次持续线抛出此错误:

AsTensorError: ('Cannot convert [[Elemwise{mul,no_inplace}.0 Elemwise{mul,no_inplace}.0n  Elemwise{mul,no_inplace}.0]n [Elemwise{add,no_inplace}.0 Elemwise{mul,no_inplace}.0n  Elemwise{add,no_inplace}.0]n [Elemwise{add,no_inplace}.0 Elemwise{mul,no_inplace}.0n  Elemwise{add,no_inplace}.0]] to TensorType', <type 'numpy.ndarray'>)

我想不出任何方法来通过欧拉角上的矩阵操作创建此旋转矩阵。如何以Theano可以编译的格式创建此功能?

使用theano.tensor.stacklists()

rot_matrix = T.stacklists([[...], ...])

相关内容

  • 没有找到相关文章

最新更新