Ich versuche ein neurales Netzwerk zu kodieren, das Eingabe-Features akzeptiert und eine Ausgabe zurückgibt. Ich möchte jedoch die "Korrektheit" des NN überprüfen, indem ich die Ausgabe mit der tatsächlichen Ausgabe vergleiche. Gleichzeitig möchte ich zulassen, dass diese Kennzahl eine Unsicherheit in der Ausgabe berücksichtigt. Sagen wir, wenn die vorhergesagte Ausgabe innerhalb von 1 Einheit von der tatsächlichen Ausgabe entfernt ist, zähle diese vorhergesagte Ausgabe als richtig.tf.reduce_sum gibt einen größeren als erwarteten Wert zurück
Codeabsicht: Prüfen Sie, ob | x-y | ist kleiner oder gleich 1, wenn dies der Fall ist, zählen Sie alle Vorkommen, bei denen dies der Fall ist. Im Wesentlichen kann ich wissen, wie viele Fälle wahr sind.
Hier ist der Code unten,
correct = tf.reduce_sum(tf.cast(tf.less_equal(tf.abs(x - y), 1), tf.int32))
correct.eval({x: predicted_output, y = real_output})
Wenn ich eine kleine Liste mit dem Wörterbuch (Code unten) passieren, kann ich korrekte Ergebnisse zurück:
{x: [1,2,3,4,5], y: [1,2,3,1,1,]}
Allerdings, wenn ich die passieren vorhergesagter Ausgang und realer Ausgang welcher ist von Länge 10 000, manchmal ist der Rückgabewert mehr th ein 10 000.
Bin ich richtig in der Annahme, dass der zurückgegebene Wert weniger als 10 000 sein muss? Wenn ja, als welche Fehler mache ich, dass der Rückgabewert mehr als 10 000 betragen würde?
EDITED Voll ish Code enthalten:
def neural_network_model(data):
hidden_1_layer = {"weights": tf.Variable(tf.random_normal([n_input, n_nodes_hl1])),
"biases": tf.Variable(tf.random_normal([n_nodes_hl1]))}
hidden_2_layer = {"weights": tf.Variable(tf.random_normal([n_nodes_hl1, n_nodes_hl2])),
"biases": tf.Variable(tf.random_normal([n_nodes_hl2]))}
hidden_3_layer = {"weights": tf.Variable(tf.random_normal([n_nodes_hl2, n_nodes_hl3])),
"biases": tf.Variable(tf.random_normal([n_nodes_hl3]))}
output_layer = {"weights": tf.Variable(tf.random_normal([n_nodes_hl3, n_output])),
"biases": tf.Variable(tf.random_normal([n_output]))}
l1 = tf.add(tf.matmul(data, hidden_1_layer["weights"]), hidden_1_layer["biases"])
l1 = tf.nn.relu(l1)
l2 = tf.add(tf.matmul(l1, hidden_2_layer["weights"]), hidden_2_layer["biases"])
l2 = tf.nn.relu(l2)
l3 = tf.add(tf.matmul(l2, hidden_3_layer["weights"]), hidden_3_layer["biases"])
l3 = tf.nn.relu(l3)
output = tf.matmul(l3, output_layer["weights"]) + output_layer["biases"]
return output
prediction = neural_network_model(x)
correct = tf.reduce_sum(tf.cast(tf.less_equal(tf.abs(prediction - y), 1), tf.int32))
correct.eval({x: val_features, y: val_label})
Funktioniert gut für mich mit zufälligen ganzen Zahlen. Könnten Sie mir bitte die Anzahl der Klassen, die Sie haben, mitteilen? ist es 10000? Hast du die Max- und Min-Werte von x und y überprüft? – hars
@hars Anzahl der Klassen ist eins. es ist eine einzige kontinuierliche Ausgabe NN. Ich habe die Frage bearbeitet, um weitere Informationen zum Code hinzuzufügen. nicht in der Bearbeitung enthalten ist, wird die Schulungssitzung ausgeführt. vor der Überprüfung richtig. –
Haben Sie die Größe der X-, Y- und Hat-Werte überprüft? – hars