TensorFlow: Fragen zu tf.argmax () und tf.equal ()

11

Ich lerne den TensorFlow und baue ein Multilayer-Perzeptron-Modell auf. Ich schaue mir einige Beispiele an, wie zum Beispiel: Ссылка

Ich habe dann einige Fragen im folgenden Code:

%Vor%

Ich frage mich, was tf.argmax(prod,1) und tf.argmax(y,1) bedeuten und genau (Typ und Wert) zurückgeben? Und ist correct_prediction eine Variable anstelle von realen Werten?

Wie erhalten wir schließlich das Array y_test_prediction (das Vorhersageergebnis, wenn die Eingabedaten X_test sind) aus der tf-Sitzung? Vielen Dank!

    
Edamame 17.01.2017, 23:00
quelle

3 Antworten

18
%Vor%

Gibt den Index mit dem größten Wert über die Achse eines Tensors zurück.

Eingang ist ein Tensor und Achse beschreibt, welche Achse des Eingangs Tensor quer zu reduzieren. Verwenden Sie für Vektoren Achse = 0.

Für Ihren speziellen Fall verwenden wir zwei Arrays und demonstrieren dies

%Vor%

Auswerten von tf.argmax(pred, 1) ergibt einen Tensor, dessen Auswertung array([5, 5, 2, 1, 3, 0])

ergibt

Auswerten von tf.argmax(y, 1) ergibt einen Tensor, dessen Auswertung array([5, 5, 2, 1, 3, 0])

ergibt %Vor%

Nach unserem Beispiel gibt tf.equal(tf.argmax(pred, 1),tf.argmax(y, 1)) einen Tensor zurück, dessen Auswertung array(1,1,1,1,1,1) ergibt.

correct_prediction ist ein Tensor, dessen Auswertung ein 1-D-Array von Nullen und Einsen ergibt

y_test_prediction kann durch Ausführen von pred = tf.argmax(logits, 1)

erhalten werden

Die Dokumentation für tf.argmax und tf.equal kann über die folgenden Links aufgerufen werden.

tf.argmax () Ссылка

tf.equal () Ссылка

    
Ulrich.T 25.01.2017 22:46
quelle
6

Lesen der Dokumentation:

tf.argmax

  

Gibt den Index mit dem größten Wert über Achsen eines Tensors zurück.

tf.equal

  

Gibt den Wahrheitswert von (x == y) elementweise zurück.

tf.cast

  

Konvertiert einen Tensor in einen neuen Typ.

tf.reduce_mean

  

Berechnet den Mittelwert von Elementen über Dimensionen eines Tensors.

Jetzt können Sie leicht erklären, was es tut. Ihr y ist ein-hot-codiert, also hat es eine 1 und alle anderen sind Null. Ihr pred repräsentiert Wahrscheinlichkeiten von Klassen. Daher findet argmax die Positionen mit der besten Vorhersage und dem richtigen Wert. Danach überprüfen Sie, ob sie gleich sind.

Nun ist Ihr correct_prediction ein Vektor von Wahr / Falsch-Werten mit der Größe, die der Anzahl der Instanzen entspricht, die Sie vorhersagen möchten. Sie konvertieren es in Floats und nehmen den Durchschnitt.

Eigentlich ist dieser Teil im TF-Tutorial im Evaluiere das Modell gut erklärt Teil

    
Salvador Dali 21.04.2017 08:11
quelle
0

tf.argmax (Eingabe, Achse = Keine, Name = Keine, Dimension = Keine)

  

Gibt den Index mit dem größten Wert über die Achse eines Tensors zurück.

Für den konkreten Fall erhält er pred als Argument für seine input und 1 als axis . Die Achse beschreibt, um welche Achse der Eingabe-Tensor quer reduziert werden soll. Verwenden Sie für Vektoren Achse = 0.

Beispiel: In der Liste [2.11,1.0021,3.99,4.32] gibt argmax 3 zurück, das ist der Index des höchsten Wertes.

correct_prediction ist ein Tensor, der später ausgewertet wird. Es ist keine reguläre Python-Variable. Es enthält die notwendigen Informationen, um den Wert später zu berechnen. Für diesen speziellen Fall ist es Teil eines anderen Tensors accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) und wird von eval auf accuracy.eval({x: X_test, y: y_test_onehot}) ausgewertet.

y_test_prediction sollte Ihr correct_prediction Tensor sein.

    
BernardoGO 18.01.2017 00:10
quelle