2017-06-29 2 views
0

Je joins le code premier qui vous donnera une meilleure idéecomment ajouter un élément de tableau singleton numpy dans une liste?

` 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])` 

J'utilise pytorch pour la génération de mots. La ligne prediction = prediction.data.max(1)[1] nous donne l'étiquette de classe avec la probabilité maximale, qui s'avère être une valeur de tenseur. Cette instruction convertit le tenseur en un tableau numpy et la fonction item() extrait la valeur du tableau.

Maintenant, lorsque je tente d'ajouter cette valeur à l'aide pattern.append(prediction) Je reçois l'erreur suivante 'numpy.ndarray' object has no attribute 'append'

Je ne suis pas en mesure de comprendre les raisons pour lesquelles je reçois cette erreur. J'ai déjà converti le tableau numpy en valeur scalr, n'est-ce pas? Pourtant, pourquoi ai-je cette erreur?

Quelqu'un peut-il s'il vous plaît expliquer et fournir une solution à cela. Je serais très reconnaissant.

+1

il ressemble à votre 'result' (à partir de laquelle vous appelez la méthode'. append') est le 'numpy.ndarray', alors que vous attendez probablement qu'il soit une liste. Essayez de l'initialiser comme une liste, ou utilisez 'numpy.concat' –

+0

hey merci pour le commentaire. Il semble que la prédiction était une classe numpy .ndarray. Je l'ai converti en liste en utilisant la fonction '.tolist()'. Maintenant, il fonctionne comme un charme. :) –

Répondre

1

Les tableaux Numpy sont immuable par rapport à leurs dimensions. Ils ne prennent pas en charge l'opération append. Vous devez déclarer results comme une liste, puis ajoutez vos valeurs à votre liste, puis le convertir en un tableau numpy:

result = [] 
... 

result.append(prediction) # inside some loop 

... 

result = np.array(result)