0
私は、オイラー角のT.vector
を入力として受け取り、それらのオイラー角に対応する方向ベクトルを返すTheano関数を構築しようとしています。まず、ベクトルの各要素の正弦と余弦をとり、これらを回転行列に配置します。最後に、方向ベクトル[1, 0, 0]
にこの回転行列を掛けます。私が実行している問題は、このNumPy配列に回転行列を掛けることができないということです。入力の個々の要素を使用するTheano関数
これは私のコードです:
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)
最後から2番目の行は、このエラーがスローされます。
AsTensorError: ('Cannot convert [[Elemwise{mul,no_inplace}.0 Elemwise{mul,no_inplace}.0\n Elemwise{mul,no_inplace}.0]\n [Elemwise{add,no_inplace}.0 Elemwise{mul,no_inplace}.0\n Elemwise{add,no_inplace}.0]\n [Elemwise{add,no_inplace}.0 Elemwise{mul,no_inplace}.0\n Elemwise{add,no_inplace}.0]] to TensorType', <type 'numpy.ndarray'>)
私は行列演算によって、この回転行列を作成するために、どのような方法を考えることはできませんオイラー角で。どのように私はTheanoがコンパイルできる形式でこの関数を作成できますか?
ありがとうございます!誰かがもっと情報を必要とするなら、ドキュメンテーションは[here](http://deeplearning.net/software/theano/library/tensor/basic.html?highlight=stacklists#theano.tensor.stacklists)です。 –
追加の質問:Tensorflowに対応する機能があるかどうかは誰にも分かりますか?私は周りを見回しましたが、私は何かを見つけることができません。バックエンドがTheanoであろうとTFであろうと、この機能をKerasで使用できるようにしたいと思っています。 –