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!
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])
Auswerten von tf.argmax(y, 1)
ergibt einen Tensor, dessen Auswertung array([5, 5, 2, 1, 3, 0])
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)
Die Dokumentation für tf.argmax und tf.equal kann über die folgenden Links aufgerufen werden.
tf.argmax () Ссылка
tf.equal () Ссылка
Lesen der Dokumentation:
Gibt den Index mit dem größten Wert über Achsen eines Tensors zurück.
Gibt den Wahrheitswert von (x == y) elementweise zurück.
Konvertiert einen Tensor in einen neuen Typ.
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
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.
Tags und Links neural-network tensorflow deep-learning