set_dl_classifier_paramT_set_dl_classifier_paramSetDlClassifierParamSetDlClassifierParam — Setzen der Parameter des Deep Learning-basierten Klassifikators.
Die Netzwerkarchitekturen erlauben verschiedene Bildgrößen.
Aber für Netzwerke mit Fully-connected Layers macht eine Änderung der
Bildgröße ein Nachtrainieren notwendig.
Netzwerke ohne Fully-connected Layer sind direkt auf verschiedene Bildgrößen
anwendbar. Jedoch wird für Bilder, deren Größe von der Bildgröße der
Trainingsbilder abweicht, eine geringere Genauigkeit bei der Klassifikation
erwartet.
Anzahl der Bilder (und ihren entsprechenden
Labels) in einem Batch und damit die Anzahl der Bilder, die beim Training
gleichzeitig in einer Iteration verarbeitet werden. Mehr Information
können in der Referenz von train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch gefunden
werden. Dieser Parameter ist im vortrainierten Modell gespeichert.
Standardmäßig ist 'batch_size'"batch_size""batch_size""batch_size""batch_size" so gesetzt, dass ein Training des
vortrainierten Klassifikators mit bis zu 100 Klassen problemlos
auf einer GPU mit einem Speicher von 8 Gigabyte durchgeführt
werden kann. Für die vortrainierten Klassifikatoren ergeben sich so
folgende Standardwerte für die Batchgröße:
Vortrainierter Klassifikator
Standardwerte für
'batch_size'"batch_size""batch_size""batch_size""batch_size"
Anzahl Kanäle, die das Netzwerk
verarbeitet. Möglich sind ein Kanal (Grauwertbild) oder drei Kanäle
(dreikanaliges Bild). Der Defaultwert ist durch das Neuronale Netzwerk
bestimmt, siehe read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierReadDlClassifier.
Ein Wechsel auf einen Kanal modifiziert die Netzwerk-Konfiguration.
Dieser Prozess entfernt die Farbinformation, die in gewissen Layern
enthalten ist, und ist nicht invertierbar.
Ein Tupel mit den Bilddimensionen
Bildbreite 'image_width'"image_width""image_width""image_width""image_width", Bildhöhe 'image_hight'"image_hight""image_hight""image_hight""image_hight" und
Anzahl der Kanäle 'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels".
Die Defaultwerte sind durch das Neuronale Netzwerk gegeben, siehe
read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierReadDlClassifier.
Bezüglich der Anzahl Kanäle sind ein Kanal (Grauwertbild) oder drei Kanäle
(dreikanaliges Bild) möglich.
Ein Wechsel auf einen Kanal modifiziert die Netzwerk-Konfiguration.
Dieser Prozess entfernt die Farbinformation, die in gewissen Layern
enthalten ist, und ist nicht invertierbar.
Werden die Argumente der Zielfunktionswerte aktualisiert, gibt
der Hyperparameter 'momentum'"momentum""momentum""momentum""momentum" an, zu welchem Ausmaß vorherige
Aktualisierungsvektoren im aktuellen Aktualisierungsvektor berücksichtigt
werden.
Für weitere Informationen verweisen wir auf die Referenz von
train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch.
Standardmäßig ist 'momentum'"momentum""momentum""momentum""momentum" auf 0.9 gesetzt.
'runtime'"runtime""runtime""runtime""runtime":
Definiert die Einheit, auf der die Operatoren ausgeführt werden.
Standardmäßig ist 'runtime'"runtime""runtime""runtime""runtime" auf 'gpu'"gpu""gpu""gpu""gpu" gesetzt.
Falls zuvor auf der GPU gerechnet wurde, wird Speicher auf der
CPU initialisiert und falls notwendig werden auf der GPU gespeicherte
Werte auf die CPU verschoben.
Regularisierungsparameter für die Regularisierung der
Zielfunktion. Diese Regularisierung ist hilfreich falls während des
Klassifikatortrainings Überanpassung auftritt.
Ist der Hyperparameter
'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" auf einen Wert ungleich Null gesetzt, so wird
der folgende Regularisierungsterm zur Zielfunktion addiert (siehe
train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch):
Der Index k läuft hierbei über alle Gewichte des Netzwerks, mit der
Ausnahme von Bias-Termen. Diese werden nicht regularisiert. Der
Regularisierungs-Term schiebt die Gewichte
gegen Null und bestraft damit insbesondere größte Gewichte, was effektiv
die Komplexität des Modells verringert.
Einfach gesagt, begünstigt die Regularisierung einfachere
Modelle, die weniger anfällig sind, Rauschen in den Daten zu lernen und
dadurch generalisieren diese Modelle in der Regel besser. Standardmäßig
wird keine Regularisierung verwendet, d.h. 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" ist
0.0. Für den Fall einer Überanpassung des Klassifikators,
empfehlen wir verschiedene Werte für den Parameter 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior"
zu testen. Die Wahl des Wertes ist eine Abwägen zwischen der Fähigkeit des
Netzwerkes zu Generalisieren, einer Überanpassung oder einer
Unteranpassung. Ist zu klein, ist eine Überanpassung
möglich, ist es zu groß kann es passieren, dass das Modell seine
Fähigkeit verliert, sich an die Daten anzupassen, da dann alle Gewichte
effektiv null sind. Um einen idealen Wert für zu finden,
empfehlen wir eine Kreuzvalidierung durchzuführen. Das heißt, das
Training wird für eine Reihe von Werten durchgeführt und man wählt den
Wert, der den besten Validierungsfehler liefert.
Üblich sind zum Testen die Werte für 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" auf einer
logarithmischen Skala zwischen .
Falls das Training sehr lange dauert, besteht die Möglichkeit für die
Optimierung der Hyperparameter einen reduzierten Datensatz zu verwenden.
Das Konzept der Deep Learning-basierten Klassifikation ist in der Einleitung
zu Kapitel Deep Learning / Klassifikation beschrieben.
Sind die Parameterwerte korrekt, dann liefert
set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.