2016-04-10 5 views
1

私は行列 'y'を持っていて、yのすべての行に数値の1つを加えたいと思います。最初の列を設定する行列xを設定します。追加します。私は次のコードを使用します:theanoの型を扱う方法

import numpy 
import theano 
import theano.tensor as T 

x = T.matrix('x') 
y = T.matrix('y') 
z = T.sum(y[T.arange(1,5),x[:,0]]) 

f = theano.function(inputs=[x,y],outputs=z) 

x = numpy.asarray([[1],[2],[3],[4],[0]]) 
y = numpy.ones(5,5) 
print(f([x,y])) 

しかし、これは動作しません。文法上の誤りがあります。なぜこのコードは動作しませんか?

+1

あなたはいくつかの例の入出力を与えることができますか? – malioboro

+0

お世話になりました。私は関数を記述したい、入力は2つの行列です。最初の行列は= numpy.asarray([[1,0,0,0,0]、[0,2,0,0,0]、[ 0,0,3,0,0]、[0,0,0,4,0]、[0,0,0,0,5]])、この行列の診断を追加したいと思います。 2番目の行列をb = numpy.asarray([[0]、[1]、[2]、[3]、[4]])に設定すると、最初の行に最初の番号を、2番目の行に2番目の番号を追加するon ...この例では、答えは15です...それは私がしたいことです。 – CZQ

答えて

0

コードにいくつかの問題があります。まず、[]ブラケットを使用した場合becarefulその後、慎重にデータ型を定義し、私はあなたのコードになる変更した後、

ので、(あなたがf([x,y])して関​​数を呼び出すときに、ちょうど別の配列を作る方法を参照してください)。

import numpy 
import theano 
import theano.tensor as T 

x = T.imatrix('x') #define integer matrix 
y = T.imatrix('y') 
z = T.sum(y[T.arange(5),x[:,0]]) 

f = theano.function(inputs=[x,y],outputs=z) 

x = numpy.asarray([[1],[2],[3],[4],[0]]) 
y = numpy.ones((5,5),dtype="int32") #define integer array 
print(f(x,y)) #remove square bracket 

それが助けて欲しいと思っています

+0

それは動作します!ありがとうございました! – CZQ

+1

あなたの歓迎:)私はあなたが私の答えが問題を解決したと感じたら、あなたはスタックオーバーフローで新しいと思う、緑色のチェックマークをクリックして '受け入れ'とマークしてください。 – malioboro

関連する問題