addLayer - Quels types de couches puis-je ajouter avec l'action `addLayer`?

Typologie : Les Briques de Construction

Réponse

Vous pouvez ajouter une grande variété de types de couches, notamment : 'INPUT' (entrée), 'CONV' (convolution), 'POOL' (pooling), 'FC' (entièrement connectée), 'RECURRENT' (récurrente), 'BATCHNORM' (normalisation par lots), 'OUTPUT' (sortie), 'RESIDUAL' (résiduelle), 'CONCAT' (concaténation), et plusieurs autres pour des tâches spécialisées comme la détection d'objets ('DETECTION') ou la segmentation ('SEGMENTATION').
SAS / CASL
proc cas;
   /* 1. Création du modèle vide */
   deepLearn.buildModel / modelTable={name="MonCNN", replace=true} type="CNN";

   /* TYPE 1 : INPUT (La porte d'entrée - Dimensions fixes) */
   deepLearn.addLayer / modelTable="MonCNN", name="L_Input",
      layer={type="INPUT", nChannels=1, width=28, height=28};

   /* TYPE 2 : CONVO (Extraction de features - Filtres requis) */
   deepLearn.addLayer / modelTable="MonCNN", name="L_Convo_1",
      srcLayers={"L_Input"},
      layer={
         type="CONVO",    /* Type Convolution */
         nFilters=32,     /* Nombre de feature maps */
         width=3, height=3, /* Taille du Kernel (3x3) */
         act="RELU"
      };

   /* TYPE 3 : POOL (Réduction de dimension - Fenêtre requise) */
   deepLearn.addLayer / modelTable="MonCNN", name="L_Pool_1",
      srcLayers={"L_Convo_1"},
      layer={
         type="POOL",     /* Type Pooling */
         pool="MAX",      /* Méthode (Max Pooling) */
         width=2, height=2, stride=2
      };

   /* TYPE 4 : FULLCONNECT (Classification - Nombre de neurones requis) */
   deepLearn.addLayer / modelTable="MonCNN", name="L_Dense",
      srcLayers={"L_Pool_1"},
      layer={
         type="FULLCONNECT", /* Type Dense/Fully Connected */
         n=128,              /* Nombre de neurones cachés */
         act="RELU"
      };
      
   /* TYPE 5 : OUTPUT (Probabilités - Fonction d'activation finale) */
   deepLearn.addLayer / modelTable="MonCNN", name="L_Output",
      srcLayers={"L_Dense"},
      layer={type="OUTPUT", act="SOFTMAX"};

   /* Résumé de l'architecture hétérogène */
   deepLearn.modelInfo / modelTable="MonCNN";
quit;
Cette réponse vous a-t-elle aidé ?
Attention à la syntaxe spécifique du dictionnaire layer. Le choix de la valeur type (dans le paramètre layer) transforme radicalement les paramètres obligatoires attendus par l'action. C'est la source d'erreur n°1.

Si vous choisissez type="CONVO", vous devez spécifier la géométrie du filtre (width, height) et le nombre de filtres (nFilters).

Si vous choisissez type="FULLCONNECT" (souvent appelé "Dense" ailleurs), seul le nombre de neurones (n) est requis.

Point de vigilance : Pour les couches de pooling (POOL), le type par défaut est souvent MAX, mais n'oubliez pas de préciser width et height (la taille de la fenêtre de pooling), sinon l'action échouera.
addLayer

deepLearn

Doc : addLayer