33 votes

TensorFlow: questions concernant tf.argmax () et tf.equal ()

Je suis en train d'apprendre le TensorFlow, la construction d'un multilayer_perceptron modèle. Je suis à la recherche dans certains exemples, comme celui de: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/multilayer_perceptron.ipynb

J'ai ensuite quelques questions dans le code ci-dessous:

def multilayer_perceptron(x, weights, biases):
    :
    :

pred = multilayer_perceptron(x, weights, biases)
    :
    :

with tf.Session() as sess:
    sess.run(init)
         :
    correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))

    accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
    print ("Accuracy:", accuracy.eval({x: X_test, y: y_test_onehot}))

Je me demande que dois - tf.argmax(prod,1) et tf.argmax(y,1) de la moyenne et de retour (type et valeur) exactement? Et est - correct_prediction d'une variable à la place de vraies valeurs?

Enfin, comment pouvons-nous obtenir l' y_test_prediction tableau (la prédiction de résultat lorsque les données d'entrée est - X_test) de la tf de la session? Merci beaucoup!

45voto

Ulrich.T Points 461
tf.argmax(input, axis=None, name=None, dimension=None)

Renvoie l'index avec la plus grande valeur de l'ensemble de l'axe d'un tenseur.

l'entrée est un Tenseur et l'axe décrit l'axe de l'entrée du Tenseur de à réduire à travers. Pour les vecteurs, l'utilisation de l'axe = 0.

Pour votre cas particulier, nous allons utiliser deux tableaux, et de démontrer que cette

pred = np.array([[31, 23,  4, 24, 27, 34],
                [18,  3, 25,  0,  6, 35],
                [28, 14, 33, 22, 20,  8],
                [13, 30, 21, 19,  7,  9],
                [16,  1, 26, 32,  2, 29],
                [17, 12,  5, 11, 10, 15]])

y = np.array([[31, 23,  4, 24, 27, 34],
                [18,  3, 25,  0,  6, 35],
                [28, 14, 33, 22, 20,  8],
                [13, 30, 21, 19,  7,  9],
                [16,  1, 26, 32,  2, 29],
                [17, 12,  5, 11, 10, 15]])

L'évaluation tf.argmax(pred, 1) donne un tenseur dont l'évaluation donnera array([5, 5, 2, 1, 3, 0])

L'évaluation tf.argmax(y, 1) donne un tenseur dont l'évaluation donnera array([5, 5, 2, 1, 3, 0])

tf.equal(x, y, name=None) takes two tensors(x and y) as inputs and returns the truth value of (x == y) element-wise. 

À la suite de notre exemple, tf.equal(tf.argmax(pred, 1),tf.argmax(y, 1)) renvoie un tenseur dont l'évaluation donneraarray(1,1,1,1,1,1).

correct_prediction est un tenseur dont l'évaluation donnera un 1-D tableau de 0 et de 1

y_test_prediction peut être obtenue en exécutant pred = tf.argmax(logits, 1)

La documentation pour la tf.argmax et tf.l'égalité peut être consulté en suivant les liens ci-dessous.

tf.argmax() https://www.tensorflow.org/api_docs/python/math_ops/sequence_comparison_and_indexing#argmax

tf.l'égalité() https://www.tensorflow.org/versions/master/api_docs/python/control_flow_ops/comparison_operators#equal

15voto

Salvador Dali Points 11667

La lecture de la documentation:

tf.argmax

Renvoie l'index avec la plus grande valeur à travers les axes d'un tenseur.

tf.equal

Renvoie la valeur de vérité de (x == y) de l'élément de sage.

tf.cast

Jette un tenseur d'un nouveau type.

tf.reduce_mean

Calcule la moyenne des éléments dans l'ensemble des dimensions d'un tenseur.


Maintenant, vous pouvez facilement expliquer ce qu'il fait. Votre y est un chaud codé, donc il y a un 1 et tous les autres sont nuls. Votre pred représente les probabilités des classes. Donc argmax trouve les positions de la meilleure prédiction et la valeur correcte. Après que vous vérifiez qu'ils sont identiques.

Alors maintenant, votre correct_prediction est un vecteur de Vrai/Faux des valeurs avec la taille égale au nombre d'instances que vous souhaitez à prévoir. Vous convertir en chars et en faire la moyenne.


En fait, cette partie est très bien expliqué dans TF tutoriel en Évaluer le Modèle de la partie

1voto

BernardoGO Points 1134

tf.argmax(entrée, axe=None, nom=None, dimension=None)

Renvoie l'index avec la plus grande valeur de l'ensemble de l'axe d'un tenseur.

Pour le cas spécifique, il reçoit pred comme argument pour input et 1 comme axis. L'axe décrit l'axe de l'entrée du Tenseur de à réduire à travers. Pour les vecteurs, l'utilisation de l'axe = 0.

Exemple: compte tenu de la liste [2.11,1.0021,3.99,4.32] argmax sera de retour 3 ce qui est l'indice de la valeur la plus élevée.


correct_prediction est un tenseur qui seront évalués ultérieurement. Il n'est pas régulier, une variable python. Il contient les informations nécessaires pour calculer la valeur plus tard. Pour ce cas précis, il fera partie d'un autre tenseur accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) et seront évaluées par eval sur accuracy.eval({x: X_test, y: y_test_onehot}).


y_test_prediction devrait être votre correct_prediction tenseur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X