[PYTHON] Denken Sie an Aussetzer mit MNIST

Lassen Sie uns über einen Ausfall nachdenken, indem Sie den Artikel hier verwenden, der neulich veröffentlicht wurde. Es endet jedoch in einem Wort.

Was ist ein Schulabbrecher?

Überlernen tritt manchmal auf, wenn tiefes Lernen für rigoroses Lernen verwendet wird. Dies bedeutet, dass zu viele Trainingsdaten verarbeitet werden und ein dedizierter Diskriminator wird, der es unmöglich macht, mit anderen Daten umzugehen.

Die Identifizierung ist im Grunde ein Klassifizierungsproblem, aber diese Klassifizierung funktioniert nicht. Es ist leicht in der Grafik zu sehen, aber es gibt einige Punkte, die zunächst nicht entlang der Punkte liegen, aber schließlich wird eine Kurve in der Nähe der Punkte fertiggestellt. Wenn Sie jedoch zu viel trainieren, erhalten Sie eine seltsame Kurve, obwohl sie sich in der Nähe jedes Punktes befindet. Sie können sehen, dass es nicht funktioniert, selbst wenn Sie damit klassifizieren. dc21319e-6fb5-aa76-34b4-b9e18891553d.png

Nachdem wir etwas gelernt haben, werden wir die Teile ignorieren, die nicht so relevant sind. Dies ist ein "Aussetzer".

Im Fall von Deep Learning ist jeder Knoten in einer Hierarchie verbunden, aber ich werde den Knoten löschen, der unnötig erscheint. 20160714170858.jpg

Beschreibung in TensorFlow

Legen Sie in TensorFlow fest, wie viel Prozent dieses "Löschknotens" verbleiben sollen. Die zu verwendende Funktion ist "tensorflow.nn.dropout ()". Das Verhältnis wird durch das zweite Argument angegeben.

keep_prob = tensorflow.placeholder(tf.float32)
h_fc1_drop = tensorflow.nn.dropout(h_fc1, keep_prob)

Im Tutorial wird das Verhältnis, das beim Ausführen des Lernens verbleiben soll, als "0,5" angegeben. (Lassen Sie die Hälfte der Knoten und löschen Sie die Hälfte der Knoten)

train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})

Bitte fallen Sie während des Tests nicht aus. (Stellen Sie "1.0" ein)

accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0})

Wertanpassung

Es bleibt keine andere Wahl, als zu versuchen, was als Wert gut ist, aber es scheint, dass nicht nur der Wert, sondern auch der Ort und die Anzahl der Aussetzer angepasst werden müssen.

Recommended Posts

Denken Sie an Aussetzer mit MNIST
Anmerkungen zu mit
MNIST (DCNN) mit Skflow
Denken Sie an Yaml mit Python
Über den Import
Denken Sie an Aussetzer mit MNIST
Über das Lernen mit Google Colab
Implementieren Sie eine Blockchain mit ca. 60 Zeilen
Versuchen Sie TensorFlow MNIST mit RNN
Was Anfänger über das Programmieren im Jahr 2016 denken
Denken Sie an das Problem der minimalen Änderung
Führen Sie eine Inferenz mit dem Chainer 2.0 MNIST-Beispiel durch
Denken Sie grob über die Verlustfunktion nach
Über Menüs durch Kombinationsoptimierung nachdenken