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.
Über das Set : deepLearn

Erstellung und Training tiefer neuronaler Netze.

Entdecken Sie alle Aktionen von deepLearn
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.