2016-03-30 3 views
1

なぜ私は以下に書いたコードによって再構成されたテンソル変数を評価できないのですか?なぜテアノで再構成されたテンソル変数を評価できないのですか?

from theano import shared 
from theano import tensor as T 
import numpy 

x = T.matrix('x') # the input data 

# input = (nImages, nChannel(nFeatureMaps), nDim1, nDim2, nDim3) 

layer1_input = T.reshape(x, xTrain.shape, ndim=5) 
layer1_input.eval({x:xTrain}) 

私は、それは単純に報告し、

TypeError: ('Bad input argument to theano function with name ":17" at index 0(0-based)', 'Wrong number of dimensions: expected 2, got 5 with shape (2592, 1, 51, 61, 23).')

答えて

1

をtensorvariable Xを再形成し、それに同次元のnumpyの配列を渡すしておりますので、私はあなたがmatrix(2次元を使用しているため、問題があると思います)のデータ型としてxと入力し、5次元入力xTrainを受け取ります。上記hereのように、5次元入力の場合、カスタムデータ型を作成する必要があります。

サンプルコード:

from theano import tensor as T 
import numpy as np 
xTrain = np.random.rand(1,1,2,3,3).astype('float32') 

dtensor5 = T.TensorType('float32', (False,)*5) 
x = dtensor5('x') 

layer1_input = x 
print layer1_input.eval({x:xTrain}) 

Since I have reshape the tensorvariable x, and pass a numpy array of same dimension to it

私は何を実際に起こることはxは、第1の入力を受け取る(エラーを発生させる)、その後、あなたがlayer1_input

+1

のためにそれを再構築変数だと思います私はそのように考えていて、私のプログラムはそのeval()の部分に固執しているようです。カスタマイズされたテンソル型を宣言することができるのであれば、チュートリアルで述べたように(なぜならそれはそうであるように思われる)、なぜそれらを高次元に再構成できますか? – xxx222

+2

答えを更新しました。どのような "スタック"? reshapeはあなたのコードのように使うことができます。 'layer1_input'は5次元(最初に宣言しないで)ですが、' x'は2次元のテンソル変数 – malioboro

関連する問題