deepLearn

dlImportModelWeights

##set_deeplearn ##ai

Description

L'action permet de transférer les poids pré-entraînés depuis un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). externe (Keras ou Caffe) vers une table en mémoireGemini said

Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya.
de SAS Viya (). Fini de soulever de la fonte pour entraîner vos modèles depuis zéro, importez directement la connaissance ! Cette action est indispensable pour le transfert d'apprentissage (Transfer Learning) et le fine-tuning. Elle requiert qu'une table contenant l'architecture du modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). cible () soit déjà définie sur le serveur.

Syntaxe Officielle
proc cas;
deepLearn.dlImportModelWeights /
dataSpecs={{
data={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...},
dataLayer="string",
layer="string",
lossScaleFactor=double,
nominals={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, ...},
numericNominalParms={length="variable-name", tokenSize=64-bit-integer},
type="IMAGE" | "NUMERICNOMINAL" | "OBJECTDETECTION" | "TEXT"
}, ...}
formatType="CAFFE" | "KERAS"
gpuModel=TRUE | FALSE
labelTable={name="table-name", caslib="string", ...}
modelTable={name="table-name", caslib="string", ...}
modelWeights={name="table-name", caslib="string", replace=TRUE | FALSE, ...}
nThreads=integer
textEmbeddingDim=64-bit-integer
weightFileCaslib="string"
weightFilePath="string";
run;

Paramètres Clés

Nom du paramètre Description
modelTable Spécifie la table en mémoire contenant l'architecture du réseau de neurones cible. Ce modèle vide ou existant doit être défini au préalable (par ex. via l'action ).
modelWeights Spécifie le nom de la table de sortie en mémoire SAS qui stockera les poids du modèle importés et prêts à l'emploi.
formatType Spécifie le format du modèle externe d'origine. Les valeurs possibles sont ou (le format de poids Keras est généralement au format de fichier HDF5).
weightFileCaslib Spécifie le nom de la CASLIB (la librairie virtuelle de destination) qui abrite physiquement le fichier de poids externe à importer.
weightFilePath Spécifie le chemin relatif et le nom du fichier des poids à importer (par ex. 'model_weights.h5'). Le serveur contrôleur CAS doit impérativement avoir un accès en lecture à ce chemin.
dataSpecs Option avancée qui permet de lier et de configurer précisément le type de données (, , etc.) en ciblant le nom de la couche () pour un mappage parfait des tenseurs lors de l'import.

Préparation des données

Préparation de l'architecture du modèle

Avant d'importer les poids, nous devons générer l'architecture vide du réseau de neurones qui les accueillera, en appelant préalablement l'action %%buildModel%%.

1PROC CAS;
2 DEEPLEARN.buildModel /
3 modelTable={name="MonModeleKeras", replace=TRUE}
4 type="CNN";
5RUN;

Exemples d'utilisation

Importation classique de poids Keras

Ce code charge les poids stockés dans un fichier `.h5` issu de Keras dans la table CAS %%Poids_Importes%%, pour l'appliquer à l'architecture %%MonModeleKeras%%.

1PROC CAS;
2 DEEPLEARN.dlImportModelWeights /
3 modelTable={name="MonModeleKeras"}
4 modelWeights={name="Poids_Importes", replace=TRUE}
5 formatType="KERAS"
6 weightFileCaslib="Public"
7 weightFilePath="vgg16_weights.h5";
8RUN;
Résultat Attendu :
Une nouvelle table en mémoire CAS nommée 'Poids_Importes' est créée et structurée. Elle contient l'intégralité des tenseurs de poids et biais récupérés du modèle Keras externe.
Importation de poids pour la reconnaissance d'images (ResNet50)

Lorsque la complexité du réseau le requiert, l'option %%dataSpecs%% permet d'indiquer à la couche d'entrée du modèle (ici `input_1`) qu'elle doit se binder correctement avec des tenseurs de type %%IMAGE%%. Idéal pour faire correspondre l'architecture Keras d'origine aux couches construites dans SAS Viya.

1PROC CAS;
2 DEEPLEARN.dlImportModelWeights /
3 modelTable={name="ResNet50_SAS"}
4 modelWeights={name="Poids_ResNet50", replace=TRUE}
5 formatType="KERAS"
6 weightFileCaslib="Public"
7 weightFilePath="resnet50_weights_tf_dim_ordering_tf_kernels.h5"
8 dataSpecs={{
9 type="IMAGE",
10 layer="input_1"
11 }};
12RUN;
Résultat Attendu :
La procédure associe scrupuleusement les poids externes aux matrices de neurones de l'architecture 'ResNet50_SAS' en se calant sur la couche 'input_1', générant la table finale 'Poids_ResNet50' prête à l'emploi avec l'action %%dlScore%% ou %%dlTrain%%.