2016-03-04 50 views
0

如何创建一个theano矩阵的theano标量组成的? 以下代码创建了一个由theano标量组成的numpy数组。但我想要有一个theano矩阵。Theano矩阵组成theano标量的

C = T.cos 
S = T.sin 
q = T.fscalar(name="q%d"%self.i) 

names = ['x','y','z'] 
Sx,Sy,Sz = map(lambda name: T.fscalar(name=name),names) 

self.mat = np.array([[C(q),-S(q)*C(alpha),S(q)*S(alpha),a*C(q)+Sx], 
        [S(q),C(q)*C(alpha),-C(q)*S(alpha),a*S(q)+Sy], 
        [0,S(alpha),C(alpha),d+Sz], 
        [0,0,0,1]]) 

回答

1

可以在几乎相同的方式使用theano.tensor.stacklists,就像使用np.array构建一个正常numpy的阵列:使用theano.tensor.stacktheano.tensor.concatenate构建1D

import numpy as np 
import theano 
from theano import tensor as te 

a = te.fscalar("a") 
b = te.fscalar("b") 
M = te.stacklists([[a, b], [b, a]]) 

f = theano.function([a, b], M) 

print(f(1.0, 2.0)) 
# [[ 1. 2.] 
# [ 2. 1.]] 

你可以达到同样的效果从你的标量向量,然后使用它的reshape方法将其重塑成具有所需尺寸的矩阵/张量。