create_dl_layer_loss_cross_entropy — Erstellen eines Cross-Entropy-Loss-Layers.
create_dl_layer_loss_cross_entropy( : : DLLayerInput, DLLayerTarget, DLLayerWeights, LayerName, LossWeight, GenParamName, GenParamValue : DLLayerLossCrossEntropy)
Der Operator create_dl_layer_loss_cross_entropy erstellt einen
Cross-Entropy-Loss-Layer, dessen Handle in DLLayerLossCrossEntropy
zurückgegeben wird.
Dieser Layer berechnet den zweidimensionalen Cross-Entropy-Loss der Eingabe
(gegeben durch DLLayerInput) mit dem entsprechenden Target
(gegeben durch DLLayerTarget) und Gewicht
(gegeben durch DLLayerWeights).
Cross Entropy wird im üblicherweise genutzt um die Ähnlichkeit zweier Vektoren zu messen.
Anschauungsbeispiel, bei dem ein Klassifikationsproblem auf Pixelebene mit drei Klassen vorliegt.
Der Eingabevektor für ein einzelnes Pixel ist (z.B. die Ausgabe eines Softmax-Layers), was bedeutet, dass der vorhergesagte Wert (z.B. die Wahrscheinlichkeit) 0.7 für die Klasse mit Index 0, 0.1 für die Klasse mit Index 1 und 0.2 für die Klasse mit Index 2 beträgt.
Der Zielvektor ist mit einer Wahrscheinlichkeit von 1.0 für die aktuelle Klasse und ansonsten 0.0. Die Entropie wird durch das Skalarprodukt dieser beiden Vektoren berechnet. Da der Zielvektor nur einen Eintrag ungleich Null hat kann er durch den Index der aktuellen Klasse anstelle eines Vektors angegeben werden, in diesem Fall .
Die Cross Entropy ist dann einfach der Wert des Eingabevektors beim Index der Zielklasse, also . Mit dieser Vereinfachung kann die Cross-Entropy-Loss-Funktion über ein Eingabebild definiert werden durch wobei die Eingabe aus einem Vorhersagevektor für jedes Pixel besteht, das Ziel und das Gewicht aus einem Wert und für jedes Eingabepixel bestehen, die Anzahl Pixel ist und die Summe aller Gewichte ist.
Dieser Layer erwartet mehrere Layer als Eingabe:
DLLayerInput: Bestimmt die Vorhersagen
(z.B. ein Softmax-Layer, üblicherweise mit logarithmierten
Ergebnissen).
DLLayerTarget: Bestimmt die Zielsequenzen
(aus den Ground-Truth-Informationen stammend).
DLLayerWeights: Bestimmt die Gewichtssequenz. Dieser
Parameter ist optional. Wenn ein leeres Tupel [] übergeben wird,
wird für jeden Wert das Gewicht 1.0 verwendet.
Der Parameter LayerName legt einen individuellen Layernamen fest.
Es ist zu beachten, dass beim Erstellen eines Modells mit
create_dl_model jeder Layer des erstellten Netzes einen
eindeutigen Namen haben muss.
Der Parameter LossWeight bestimmt den skalaren Gewichtungsfaktor
mit dem der in diesem Layer berechnete Loss multipliziert wird.
Dieser Parameter kann genutzt werden um den Beitrag des Cross-Entropy-Loss
zum gesamten Loss des Netzwerks zu bestimmen, falls mehrere Loss-Layer
verwendet werden.
Die folgenden generischen Parameter GenParamName und die
entsprechenden Werte GenParamValue werden unterstützt:
Bestimmt, ob apply_dl_model die Ausgabe dieses Layers im
Dictionary DLResultBatch zurückgibt, auch ohne den
Layer in Outputs anzugeben ('true'), oder
nur falls er angegeben wird ('false').
Default: 'false'
Bestimmte Parameter von Layern, die mit
create_dl_layer_loss_cross_entropy erzeugt wurden, können mit
weiteren Operatoren gesetzt und abgerufen werden.
Die folgenden Tabellen geben einen Überblick, welche Parameter mit
set_dl_model_layer_param gesetzt werden können und welche mit
get_dl_model_layer_param oder get_dl_layer_param ausgelesen
werden können. Es ist zu beachten, dass die Operatoren
set_dl_model_layer_param und get_dl_model_layer_param ein
Modell benötigen, das mit create_dl_model erzeugt wurde.
| Layer-Parameter | set | get |
|---|---|---|
'input_layer' (DLLayerInput, DLLayerTarget, und/oder DLLayerWeights) |
||
'loss_weight' (LossWeight) |
||
'name' (LayerName) |
||
'output_layer' (DLLayerLossCrossEntropy) |
||
| 'shape' | ||
| 'type' |
| Generische Layer-Parameter | set | get |
|---|---|---|
| 'is_inference_output' | ||
| 'num_trainable_params' |
DLLayerInput (input_control) dl_layer → (handle)
Eingabelayer.
DLLayerTarget (input_control) dl_layer → (handle)
Ziellayer.
DLLayerWeights (input_control) dl_layer → (handle)
Gewichtelayer.
LayerName (input_control) string → (string)
Name des Ausgabelayers.
LossWeight (input_control) number → (real)
Gesamt-Loss-Gewicht, falls mehrere Losses im Netzwerk existieren.
Defaultwert: 1.0
GenParamName (input_control) attribute.name(-array) → (string)
Namen der generischen Eingabeparameter.
Defaultwert: []
Werteliste: 'is_inference_output'
GenParamValue (input_control) attribute.value(-array) → (string / integer / real)
Werte der generischen Eingabeparameter.
Defaultwert: []
Wertevorschläge: 'true', 'false'
DLLayerLossCrossEntropy (output_control) dl_layer → (handle)
Cross-Entropy-Loss-Layer.
Deep Learning Training