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
Je puis avoir 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 ce que ne tf.argmax(prod,1)
et tf.argmax(y,1)
de la moyenne et de retour (type et valeur) exactement? Et est correct_prediction
une variable à la place de vraies valeurs?
Enfin, comment pouvons-nous obtenir la y_test_prediction
array (la prédiction de résultat lorsque les données d'entrée est X_test
) à partir de la tf de la session? Merci beaucoup!
source d'informationauteur Edamame
Vous devez vous connecter pour publier un commentaire.
Renvoie l'index avec la plus grande valeur de l'ensemble de l'axe d'un tenseur.
d'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
L'évaluation
tf.argmax(pred, 1)
donne un tenseur dont l'évaluation donneraarray([5, 5, 2, 1, 3, 0])
L'évaluation
tf.argmax(y, 1)
donne un tenseur dont l'évaluation donneraarray([5, 5, 2, 1, 3, 0])
À la suite de notre exemple,
tf.equal(tf.argmax(pred, 1),tf.argmax(y, 1))
retourne 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 obtenu par l'exécution de
pred = tf.argmax(logits, 1)
La documentation pour les 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
La lecture de la documentation:
tf.argmax
tf.l'égalité
tf.cast
tf.reduce_mean
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. Votrepred
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, vos
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 dans le Évaluer le Modèle partie
tf.argmax(entrée, axe=None, nom=None, dimension=None)
Pour le cas spécifique, il reçoit
pred
comme argument pourinput
et1
commeaxis
. 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: la liste
[2.11,1.0021,3.99,4.32]
argmax sera de retour3
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 pareval
suraccuracy.eval({x: X_test, y: y_test_onehot})
.y_test_prediction devrait être votre
correct_prediction
tenseur.