2017-06-29 20 views
0

私は単語の生成にpytorchを使用していますあなたに良いアイデアシングルトンnumpy配列アイテムをリストに追加する方法は?

` prediction = prediction.data.max(1)[1] #gives a tensor value 
    prediction = (prediction.cpu().numpy().item()) #converts that tensor into a numpy array 
    result.append(int_to_word[prediction])` 

を与えるであろう最初のコードを添付しています。線prediction = prediction.data.max(1)[1]は、最大確率を持つクラスラベルを与え、テンソル値であることが分かります。

prediction = (prediction.cpu().numpy().item())このステートメントは、テンソルをnumpy配列に変換し、関数item()は配列から値を抽出します。

は今、私はこのエラーを取得しています理由として理解することはできませんよ、私は次のエラー 'numpy.ndarray' object has no attribute 'append'

を取得していますpattern.append(prediction) を使用して、この値を追加しようとします。私はすでにnumpy配列をscalr値に変換しています。それでも、なぜ私はそのエラーを取得していますか?

誰でも説明して解決策を提供できますか?私は最も感謝しています。

+1

、それはあなたがメソッドを呼び出して、そこから自分の 'result'('のように見えます。 append')は 'numpy.ndarray'ですが、おそらくあなたはそれがリストであることを期待しています。それをリストとして初期化してみるか、 'numpy.concat'を使用してください。 –

+0

コメントありがとうございました。予測はクラスnumpyであるようです。 '.tolist()'関数を使ってリストに変換しました。今は魅力のように働いています。 :) –

答えて

1

ナンシーアレイは、それらの寸法に関して不変であるです。彼らはappend操作をサポートしていません。あなたは、リストとしてresultsを宣言し、その後あなたのリストに自分の価値観を追加した後、numpyの配列に変換する必要があります:

result = [] 
... 

result.append(prediction) # inside some loop 

... 

result = np.array(result) 
関連する問題