create_dl_layer_class_id_conversion — Erstellen eines Klassen-ID-Konvertierungslayers.
create_dl_layer_class_id_conversion( : : DLLayerInput, LayerName, ConversionMode, GenParamName, GenParamValue : DLLayerClassIdConversion)
Der Operator create_dl_layer_class_id_conversion erzeugt einen
Klassen-ID-Konvertierungslayer, dessen Handle in
DLLayerClassIdConversion zurückgegeben wird.
Der Layer konvertiert zwischen den intern vom Netz verwendeten IDs und den
Ziel-/Ausgabeklassen-IDs.
Das Netzwerk verwendet intern fortlaufende ganzzahlige Werte beginnend bei 0
als IDs (die Anzahl der Werte ist abhängig vom Modelltyp). Falls
die Ziel-/Ausgabeklassen-IDs von den internen IDs abweichen, kann dieser
Layer verwendet werden, um diese zu konvertieren.
Die Ziel-/Ausgabeklassen-IDs werden
in dem Modellparameter 'class_ids' gespeichert (siehe
get_dl_model_param für weitere Informationen zu diesem Parameter).
Wenn keine 'class_ids' gesetzt sind, kopiert dieser Layer
die Eingabe in die Ausgabe.
Der Parameter ConversionMode gibt die Konvertierungsrichtung an
und kann folgende Werte annehmen:
'from_class_id': Konvertiert Ziel-/Ausgabeklassen-IDs in interne IDs. Dieser Modus wird typischerweise nach einem Ziel-Eingabelayer verwendet.
'to_class_id': Konvertiert interne IDs in Ziel-/Ausgabeklassen-IDs. Dieser Modus wird typischerweise nach einem Inferenz-Ausgabelayer verwendet.
Der Parameter DLLayerInput bestimmt den zuführenden Eingabelayer
und erwartet das Layer-Handle als Wert.
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.
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_class_id_conversion
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) |
||
'name' (LayerName) |
||
'output_layer' (DLLayerClassIdConversion) |
||
| 'shape' | ||
'to_class_id' (ConversionMode) |
||
| 'type' |
| Generische Layer-Parameter | set | get |
|---|---|---|
| 'is_inference_output' | ||
| 'num_trainable_params' |
DLLayerInput (input_control) dl_layer → (handle)
Zuführender Layer.
LayerName (input_control) string → (string)
Name des Ausgabelayers.
ConversionMode (input_control) string → (string)
Richtung der Klassen-ID-Konvertierung.
Defaultwert: 'from_class_id'
Werteliste: 'from_class_id', 'to_class_id'
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'
DLLayerClassIdConversion (output_control) dl_layer → (handle)
Klassen-ID-Konvertierungslayer.
* Example demonstrating the usage of
* create_dl_layer_class_id_conversion.
*
dev_update_off ()
set_system ('seed_rand', 42)
*
* Create simple segmentation model.
NumClasses := 3
InputShape := [32, 32, 3]
*
* Input feeding layers.
create_dl_layer_input ('image', InputShape, [], [], DLLayerInput)
create_dl_layer_input ('target', [InputShape[0],InputShape[1],1], [], [], \
DLLayerTarget)
create_dl_layer_class_id_conversion (DLLayerTarget, 'target_internal', \
'from_class_id', [], [], \
DLLayerTargetInternal)
* Feature extraction layers.
create_dl_layer_convolution (DLLayerInput, 'conv1', 3, 1, 1, 32, 1, \
'half_kernel_size', 'relu', [], [], \
DLLayerConv1)
create_dl_layer_convolution (DLLayerConv1, 'conv2', 3, 1, 1, 32, 1, \
'half_kernel_size', 'relu', [], [], \
DLLayerConv2)
* Output generation layers.
create_dl_layer_convolution (DLLayerConv2, 'conv_final', 1, 1, 1, \
NumClasses, 1, 'none', 'none', [], [], \
DLLayerConvFinal)
create_dl_layer_softmax (DLLayerConvFinal, 'softmax', [], [], \
DLLayerSoftMax)
create_dl_layer_depth_max (DLLayerSoftMax, 'output_internal', \
'argmax', [], [], DLLayerOutputInternal, _)
create_dl_layer_class_id_conversion (DLLayerOutputInternal, 'output', \
'to_class_id', [], [], DLLayerOutput)
* Loss layer.
create_dl_layer_loss_cross_entropy (DLLayerSoftMax, DLLayerTargetInternal, \
[], 'loss', 1.0, [], [], DLLayerLoss)
*
* Create the model.
create_dl_model ([DLLayerOutput, DLLayerLoss], DLModelHandle)
set_dl_model_param (DLModelHandle, 'type', 'segmentation')
set_dl_model_param (DLModelHandle, 'runtime', 'cpu')
*
* Test model on dummy example data.
read_image (Image, 'claudia')
zoom_image_size (Image, Image, InputShape[0], InputShape[1], 'constant')
convert_image_type (Image, Image, 'real')
*
* Fill target image with specific target class IDs.
ClassIDs := [42, 17, 5]
gen_image_const (Target, 'real', InputShape[0], InputShape[1])
paint_region (Target, Target, Target, ClassIDs[0], 'fill')
gen_rectangle1 (RectClass1, 1, 3, 16, 27)
paint_region (RectClass1, Target, Target, ClassIDs[1], 'fill')
gen_rectangle1 (RectClass2, 19, 1, 30, 30)
paint_region (RectClass2, Target, Target, ClassIDs[2], 'fill')
*
* Set class IDs in the model.
set_dl_model_param (DLModelHandle, 'class_ids', ClassIDs)
*
* Create test sample.
create_dict (DLSample)
set_dict_object (Image, DLSample, 'image')
set_dict_object (Target, DLSample, 'target')
*
* Train model for a few iterations. Note that training would not
* work without the first class ID conversion layer 'target_internal'.
for Idx := 1 to 100 by 1
train_dl_model_batch (DLModelHandle, DLSample, DLTrainResult)
endfor
*
* Apply model on test image. With the second class ID conversion
* layer 'output', the image now contains values according to the
* target IDs in segmentation_image.
apply_dl_model (DLModelHandle, DLSample, [], DLApplyResult)
get_dict_object (SegmentationImage, DLApplyResult, 'output')
dev_display (SegmentationImage)
Deep Learning Training