2016-10-03 4 views
0

私はここで何が起こっているのか全く分かりませんが、何らかの理由でPythonがこれを私に投げかけています。参考までに、私は楽しいために構築している小さなニューラルネットワークの一部ですが、多くのnp.arrayなどが使用されていますので、たくさんの行列が投げられるので、データ型の衝突が発生していると思います。誰かが私にこれを理解させる助けになるかもしれません。なぜなら私はこのエラーをあまりにも長くそれを修正することなく見つめていたからです。Pythonのタプルインデックスは、タプルではなく整数でなければなりませんか?

EDIT:出力が返ってくる場所を知るように出力を返す関数です。 yはテキスト文書から直接取った長さ150のベクトルです。 Yの各インデックスにはインデックス1,2、または3のいずれかを含む:

#forward propogation algorithm takes a matrix "X" of size 150 x 3 
def ForProp(self, X):    
     #signal vector for hidden layer 
     #tanh activation function 
     S1 = X.dot(self.W1) + self.b1 
     Z1 = np.tanh(S1) 

     #vector for the final output layer 
     S2 = Z1.dot(self.W2)+ self.b2 
     #softmax for output layer activation 
     expScores = np.exp(S2) 
     output = expScores/(np.sum(expScores, axis=1, keepdims=True)) 
     return output,Z1 
+1

あなたはそれだと思うようにoutput'が実際NX4配列でない 'のように見えます。 – user2357112

+2

完全なトラックバックを含めてください。 –

+1

y [i]が[0,3]の範囲内にあることをどのように保証できますか?これはあなたの問題のようです。これは、間違いのミス、または建築で修正が必要なバンダイです。 – Harrichael

答えて

4

あなたoutput変数は、少なくともしないPythonのタイプ意味で、N x 4行列ではありません。これはタプルです。これは単一の数値でのみ索引付けすることができ、タプル(2つの数字の間にコマが混在しています)でインデックスを作成しようとします。あなたの出力を出力し、問題が単なる型(単にnp.arrayに変換する)か全く違うものを渡しているかを把握してから(outputを生成しているものを修正する)。何が起こっているかの

例:

import numpy as np 
output = ((1,2,3,5), (1,2,1,1)) 

print output[1, 2] # your error 
print output[(1, 2)] # your error as well - these are equivalent calls 

print output[1][2] # ok 
print np.array(output)[1, 2] # ok 
print np.array(output)[(1, 2)] # ok 
print np.array(output)[1][2] # ok 
関連する問題