addLayer - Est-il possible de remplacer une couche existante avec `addLayer`?

Refactoring : Modification Dynamique

Réponse

Oui, en définissant le paramètre `replace` sur `TRUE`. Si une couche portant le même nom que celui spécifié dans le paramètre `name` existe déjà dans le modèle, elle sera remplacée par la nouvelle couche que vous définissez. Par défaut, ce comportement est désactivé (`FALSE`).
SAS / CASL
proc cas;
   /* 1. Création du conteneur de modèle */
   deepLearn.buildModel / modelTable={name="ModeleEvolutif", replace=true} type="DNN";
   
   /* 2. Ajout de l'Input */
   deepLearn.addLayer / 
      modelTable="ModeleEvolutif", name="Input",
      layer={type="INPUT", nChannels=1, width=28, height=28};

   /* 3. Ajout initial : Couche 'OldSchool' (Tanh, 50 neurones) */
   deepLearn.addLayer /
      modelTable="ModeleEvolutif",
      name="Couche_Intermediaire",
      srcLayers={"Input"},
      layer={type="FULLCONNECT", n=50, act="TANH"};

   /* ... On se rend compte qu'on préfère une architecture plus moderne ... */

   /* 4. REMPLACEMENT (Hot Swap) : Couche 'Moderne' (Relu, 100 neurones) */
   deepLearn.addLayer /
      modelTable="ModeleEvolutif",
      name="Couche_Intermediaire", /* Même nom = Cible pour remplacement */
      srcLayers={"Input"},
      replace=true,                /* <--- L'instruction clé */
      layer={type="FULLCONNECT", n=100, act="RELU"}; /* Nouveaux hyperparamètres */

   /* Vérification : Le résumé montrera 100 neurones et non 50 */
   deepLearn.modelInfo / modelTable="ModeleEvolutif";
quit;
Cette réponse vous a-t-elle aidé ?
Le levier principal pour le Transfer Learning. L'utilisation de replace=TRUE n'est pas seulement faite pour corriger une faute de frappe. C'est la commande essentielle pour adapter un modèle pré-entraîné (comme VGG16 ou ResNet) à vos propres données. Le scénario classique : Vous chargez un modèle capable de reconnaître 1000 objets (ImageNet). La dernière couche (Output) a donc 1000 sorties. Si vous voulez classer seulement 2 objets (Chat vs Chien), vous devez remplacer cette dernière couche par une nouvelle couche ayant n=2. Attention : Si vous remplacez une couche au milieu du réseau, assurez-vous que les dimensions de sortie de votre nouvelle couche restent compatibles avec la couche suivante, sinon le graphe sera brisé.
addLayer

deepLearn

Doc : addLayer