set_dl_classifier_paramT_set_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param — Setzen der Parameter des Deep Learning-basierten Klassifikators.
Warnung
set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param ist veraltet und wird nur aus Gründen
der Rückwärtskompatibilität zur Verfügung gestellt. Neue
Applikationen sollten stattdessen den allgemeinen CNN-basierten Operator
set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParamset_dl_model_param verwenden.
Die Netzwerkarchitekturen erlauben verschiedene Bildgrößen.
Aber für Netzwerke mit Fully-connected Layern 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, die in den Gerätespeicher transferiert werden.
Die Menge der Bilder, die beim Training in einer Iteration miteinander
verarbeitet werden, beinhaltet eine Anzahl 'batch_size'"batch_size""batch_size""batch_size""batch_size""batch_size" mal
'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier" Bilder. Mehr Informationen können in der
Dokumentation von train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatchtrain_dl_classifier_batch gefunden werden.
Der Parameter 'batch_size'"batch_size""batch_size""batch_size""batch_size""batch_size" ist im vortrainierten Modell
gespeichert. Standardmäßig ist 'batch_size'"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""batch_size"
Multiplikationsfaktor für
'batch_size'"batch_size""batch_size""batch_size""batch_size""batch_size", um das Training mit einer größeren Anzahl an
Bildern in einem Schritt zu ermöglichen, was aufgrund limitierter
GPU-Speichergröße sonst nicht möglich wäre. Auf die
Evaluierung und Inferenz hat dieser Parameter keinen Einfluss.
Für weitere Details, siehe train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatchtrain_dl_classifier_batch.
Der 'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier" ist standardmäßig auf 1 gesetzt.
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_classifierReadDlClassifierReadDlClassifierReadDlClassifierread_dl_classifier.
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""image_width", Bildhöhe 'image_height'"image_height""image_height""image_height""image_height""image_height" und
Anzahl der Kanäle 'image_num_channels'"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_classifierReadDlClassifierReadDlClassifierReadDlClassifierread_dl_classifier.
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.
Definiert die Einheit, auf der die Operatoren ausgeführt werden.
Standardmäßig ist 'runtime'"runtime""runtime""runtime""runtime""runtime" auf 'gpu'"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.
Auf Arm Architekturen verwendet die 'cpu'"cpu""cpu""cpu""cpu""cpu" Laufzeit zur
Parallelisierung einen globalen thread pool. In diesem Fall kann mit
dem globalen Parameter 'thread_num'"thread_num""thread_num""thread_num""thread_num""thread_num" des Operators
set_systemset_systemSetSystemSetSystemSetSystemset_system die zu verwendende Anzahl von Threads spezifiziert
werden.
Es ist nicht möglich für die gennanten Architekturen eine
thread-spezifische Anzahl von Threads (über den Parameter
'tsp_thread_num'"tsp_thread_num""tsp_thread_num""tsp_thread_num""tsp_thread_num""tsp_thread_num" des Operators set_systemset_systemSetSystemSetSystemSetSystemset_system)
einzustellen.
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""weight_prior" auf einen Wert ungleich Null gesetzt, so wird
der folgende Regularisierungsterm zur Zielfunktion addiert (siehe
train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatchtrain_dl_classifier_batch):
Der Index k läuft hierbei über alle Gewichte des Netzwerks, mit der
Ausnahme von Bias-Termen. Diese werden nicht regularisiert. Der
Regularisierungsterm schiebt die Gewichte
gegen Null und bestraft damit insbesondere die größten 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.
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""weight_prior" zu testen.
Die Wahl des Wertes ist ein 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""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.
Der Defaultwert ist vom Klassifikator abhängig.
Das Konzept der Deep Learning-basierten Klassifikation ist in der Einleitung
zu Kapitel Deep Learning / Klassifikation beschrieben.
Der Ablauf mit diesem veralteten Operator ist im Kapitel
Legacy / DL Klassifikation beschrieben.
Sind die Parameterwerte korrekt, dann liefert
set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.