KlassenKlassen | | Operatoren

set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParam (Operator)

Name

set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParam — Setzen der Parameter des Deep Learning-basierten Klassifikators.

Signatur

set_dl_classifier_param( : : DLClassifierHandle, GenParamName, GenParamValue : )

Herror set_dl_classifier_param(const Hlong DLClassifierHandle, const char* GenParamName, const char* GenParamValue)

Herror T_set_dl_classifier_param(const Htuple DLClassifierHandle, const Htuple GenParamName, const Htuple GenParamValue)

void SetDlClassifierParam(const HTuple& DLClassifierHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HDlClassifier::SetDlClassifierParam(const HTuple& GenParamName, const HTuple& GenParamValue) const

void HDlClassifier::SetDlClassifierParam(const HString& GenParamName, const HString& GenParamValue) const

void HDlClassifier::SetDlClassifierParam(const char* GenParamName, const char* GenParamValue) const

static void HOperatorSet.SetDlClassifierParam(HTuple DLClassifierHandle, HTuple genParamName, HTuple genParamValue)

void HDlClassifier.SetDlClassifierParam(HTuple genParamName, HTuple genParamValue)

void HDlClassifier.SetDlClassifierParam(string genParamName, string genParamValue)

Beschreibung

set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam setzt die Parameter und Hyperparameter GenParamNameGenParamNameGenParamNameGenParamNamegenParamName des Neuronalen Netzwerkes DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandle auf die Werte in GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue.

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName kann folgende Werte annehmen:

'batch_size'"batch_size""batch_size""batch_size""batch_size":

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"
'pretrained_dl_classifier_compact.hdl'"pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl" 160
'pretrained_dl_classifier_enhanced.hdl'"pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl" 96

'classes'"classes""classes""classes""classes":

Tupel von Labeln entsprechend der Objektklassen die erkannt werden sollen. Die Reihenfolge der Objektklassen bleibt nach dem Setzen unverändert.

'gpu'"gpu""gpu""gpu""gpu":

Identifikationsnummer der GPU, auf der die Trainings- und Inferenz-Operatoren (train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch und apply_dl_classifierapply_dl_classifierApplyDlClassifierApplyDlClassifierApplyDlClassifier) ausgeführt werden. Standardmäßig wird die erste verfügbare GPU verwendet. Mit dem get_systemget_systemGetSystemGetSystemGetSystem Parameter 'cuda_devices'"cuda_devices""cuda_devices""cuda_devices""cuda_devices" kann die Liste der verfügbaren GPUs abgefragt werden. In ValRe('gpu') muss der Index der gewünschten GPU in dieser Liste übergeben werden.

'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate":

Anfangswert des Faktors, der den Einfluss des Gradienten während des Trainings bestimmt. Mehr Information können in der Referenz von train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch gefunden werden. Standardmäßig ist 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate" auf 0.001 gesetzt.

'momentum'"momentum""momentum""momentum""momentum":

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_init'"runtime_init""runtime_init""runtime_init""runtime_init":

Kann mit 'immediately'"immediately""immediately""immediately""immediately" dazu verwendet werden um den Speicher auf der GPU zu initialisieren und das entsprechende Handle anzulegen. Andernfalls passiert das sobald es notwendig ist, was zu signifikant längeren Laufzeiten beim ersten Aufruf von apply_dl_classifierapply_dl_classifierApplyDlClassifierApplyDlClassifierApplyDlClassifier oder train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch führen kann. Nachfolgende Aufrufe von set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam mit 'gpu'"gpu""gpu""gpu""gpu" oder 'batch_size'"batch_size""batch_size""batch_size""batch_size" führen dazu, dass der Speicher auf der GPU neu initialisiert wird.

'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior":

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.

Achtung

Um diesen Operator ausführen zu können, wird cuDNN benötigt, wenn 'gpu'"gpu""gpu""gpu""gpu" oder 'runtime_init'"runtime_init""runtime_init""runtime_init""runtime_init" gesetzt wird. Für weitere Details wird auf den Installation Guide, Abschnitt Requirements for Deep Learning, verwiesen.

Ausführungsinformationen

Parameter

DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandle (input_control)  dl_classifier HDlClassifier, HTupleHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Handle des Deep Learning-basierten Klassifikators.

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Name des generischen Parameters.

Defaultwert: 'classes' "classes" "classes" "classes" "classes"

Werteliste: 'batch_size'"batch_size""batch_size""batch_size""batch_size", 'classes'"classes""classes""classes""classes", 'gpu'"gpu""gpu""gpu""gpu", 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate", 'momentum'"momentum""momentum""momentum""momentum", 'runtime_init'"runtime_init""runtime_init""runtime_init""runtime_init", 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong)

Wert des generischen Parameters.

Defaultwert: ['class_1','class_2','class_3'] ["class_1","class_2","class_3"] ["class_1","class_2","class_3"] ["class_1","class_2","class_3"] ["class_1","class_2","class_3"]

Wertevorschläge: 1, 2, 3, 50, 0.001, 'immediately'"immediately""immediately""immediately""immediately"

Ergebnis

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.

Vorgänger

read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierReadDlClassifier

Nachfolger

get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam, apply_dl_classifierapply_dl_classifierApplyDlClassifierApplyDlClassifierApplyDlClassifier, train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch

Siehe auch

get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam

Modul

Deep Learning Inference


KlassenKlassen | | Operatoren