1

Bei der Vorbereitung von Train-Set für Neural Network Training finde ich zwei mögliche Wege.Welcher Art ist die richtige Bildnormalisierung?

  1. Der traditionelle Weg: berechnet den Mittelwert auf gesamte Ausbildung eingestellt und minus diesen festen Mittelwert pro Bild vor dem Netzwerk zu senden. Standardabweichung in ähnlicher Weise verarbeiten.
  2. Ich finde Tensorflow bietet eine Funktion tf.image.per_image_standardization, die Normalisierung auf Einzelbild tun.

Ich frage mich, welche Art und Weise besser geeignet ist?

Antwort

1

Beide Wege sind möglich, und die Wahl hängt vor allem von der Art und Weise Sie die Daten lesen.

  • Whole Trainingssatz Normalisierung ist praktisch, wenn Sie den gesamten Datensatz auf einmal in eine numpy Array laden kann. Zum Beispiel wird MNIST dataset normalerweise vollständig in den Speicher geladen. Dieser Weg ist auch in Bezug auf die Konvergenz vorzuziehen, wenn die einzelnen Bilder signifikant variieren: zwei Trainingsbilder, eines meist weiß und das andere meist schwarz, werden sehr unterschiedliche Mittel haben.

  • Pro Bild Normalisierung ist praktisch, wenn die Bilder einzeln oder in kleinen Stapeln geladen werden, zum Beispiel vom TFRecord. Es ist auch die einzige praktikable Option, wenn der Datensatz zu groß ist, um in den Speicher zu passen. In diesem Fall ist es besser, die input pipeline in tensorflow zu organisieren und die Bildtensoren genau wie andere Tensoren in der Grafik zu transformieren. Ich habe mit dieser Normalisierung in CIFAR-10 eine ziemlich gute Genauigkeit gesehen, also ist es trotz der oben genannten Probleme ein praktikabler Weg. Beachten Sie auch, dass Sie den negativen Effekt über batch normalization reduzieren können.

Verwandte Themen