?>Array ( [id] => 108 ) Performance-Test: Programmatischer Aufbau eines sehr tiefen Netzwerks für die Genomik - WeAreCAS
deepLearn addLayer

Performance-Test: Programmatischer Aufbau eines sehr tiefen Netzwerks für die Genomik

Scénario de test & Cas d'usage

Geschäftskontext

Ein Forschungsinstitut analysiert lange DNA-Sequenzen, um genetische Marker zu identifizieren. Dies erfordert ein sehr tiefes neuronales Netzwerk, um komplexe Muster über lange Distanzen zu erfassen. Dieses Szenario testet die Performance und Skalierbarkeit der `addLayer`-Aktion, indem ein Netzwerk mit über 100 Schichten programmgesteuert erstellt wird.
Datenaufbereitung

Keine Daten erforderlich. Der Test konzentriert sich auf die Fähigkeit, eine große Anzahl von Schichten effizient zu definieren.

Kopiert!
1/* Keine Datenvorbereitung erforderlich. */

Étapes de réalisation

1
Erstellung eines leeren Modell-Containers 'deep_genomic_model' und Hinzufügen der Input-Schicht.
Kopiert!
1PROC CAS;
2DEEPLEARN.buildModel / model={name='deep_genomic_model', replace=true};
3DEEPLEARN.addLayer / modelTable={name='deep_genomic_model'} name='Input' layer={type='input', nchannels=1, width=10000, height=1};
4RUN;
2
Verwendung eines SAS-Makros, um 50 Blöcke aus 'Convolution' und 'Batch Normalization' Schichten iterativ hinzuzufügen, was zu 101 Gesamtschichten führt.
Kopiert!
1%macro add_deep_blocks(model_name, num_blocks);
2 %local i prev_layer_name conv_name bn_name;
3 %let prev_layer_name = INPUT;
4 
5 PROC CAS;
6 %DO i = 1 %to &num_blocks;
7 %let conv_name = Conv&i;
8 %let bn_name = BN&i;
9 
10 DEEPLEARN.addLayer /
11 modelTable={name="&model_name"},
12 name="&conv_name",
13 layer={type='convolution', nFilters=32, width=3, stride=1, act='relu'},
14 srcLayers={"&prev_layer_name"};
15 
16 DEEPLEARN.addLayer /
17 modelTable={name="&model_name"},
18 name="&bn_name",
19 layer={type='batchnorm', act='identity'},
20 srcLayers={"&conv_name"};
21 
22 %let prev_layer_name = &bn_name;
23 %END;
24 RUN;
25%mend add_deep_blocks;
26 
27%add_deep_blocks(deep_genomic_model, 50);
3
Hinzufügen einer finalen Global-Average-Pooling- und Output-Schicht.
Kopiert!
1PROC CAS;
2DEEPLEARN.addLayer / modelTable={name='deep_genomic_model'} name='GlobalPool' layer={type='pooling', pool='average'} srcLayers={'BN50'};
3DEEPLEARN.addLayer / modelTable={name='deep_genomic_model'} name='Output' layer={type='output', n=10, act='softmax'} srcLayers={'GlobalPool'};
4RUN;

Erwartetes Ergebnis


Die Aktionen müssen ohne Timeout oder übermäßigen Ressourcenverbrauch erfolgreich ausgeführt werden. Die resultierende Modelltabelle 'deep_genomic_model' muss eine gültige Architektur mit insgesamt 103 Schichten (1 Input + 50*(Conv+BN) + 1 Pool + 1 Output) enthalten. Dies bestätigt, dass die `addLayer`-Aktion für die Erstellung sehr tiefer und komplexer Netzwerkarchitekturen skalierbar ist.