CNTK évaluer les couches masquées
Cette page explique comment exposer les valeurs de la couche masquée d’un modèle formé.
Vue d’ensemble
Un modèle CNTK repose sur des couches interconnectées. Certaines de ces couches peuvent être évaluées à l’aide du EvalDll
fait qu’elles sont marquées comme étant des couches de « sortie ». Pour exposer d’autres couches à travers le EvalDll
, ces couches doivent être étiquetées en tant que couches de sortie en les ajoutant à la outputNodes
propriété.
Par exemple, le 01_OneHidden_ndl_deprecated.cntk
fichier de configuration fait référence au 01_OneHidden.ndl
fichier pour la définition réseau. Dans ce fichier de description réseau, nous avons deux couches définies :
h1 = DNNSigmoidLayer (featDim, hiddenDim, featScaled, 1)
ol = DNNLayer (hiddenDim, labelDim, h1, 1)
Mais une seule couche est marquée comme une sortie :
outputNodes = (ol)
Par conséquent, la EvalDll
valeur retourne uniquement les valeurs relatives à la couche pendant l’évaluation ol
.
Pour pouvoir évaluer la couche masquée, nous devons d’abord l’exposer h1
en tant que nœud de sortie. Il existe trois façons possibles :
1. Modèle d’entraînement avec des couches masquées exposées
Pour générer la h1
couche, il vous suffit de l’ajouter en tant que sortie dans la description réseau (01_OneHidden.bs
fichier) lors de l’entraînement, et cette couche sera disponible pour la lecture pendant l’évaluation :
outputNodes = (h1:ol)
Toutefois, cela implique que le modèle doit être (réentraîné) avec cette configuration.
2. Modification d’un modèle déjà formé
Les modèles peuvent être modifiés à la volée lors du chargement à l’aide d’expressions BrainScript. Ce document sera documenté dans une prochaine mise à jour de cette documentation.
3. Modification de l’ensemble de nœuds de sortie d’un modèle déjà entraîné lors du chargement pour l’évaluation à l’aide des EvalDll
/EvalDllWrapper
modules
Si une formation sera évaluée à l’aide des EvalDll
/EvalDllWrapper
modules, vous pouvez ajouter la outputNodeNames
propriété avec une liste de nœuds séparée par deux-points à la définition réseau :
outputNodeNames = "h1.z:ol.z"
Lors du chargement du réseau, le moteur Eval reconnaît la propriété et remplace les outputNodeNames
nœuds de sortie du modèle par la liste des nœuds spécifiés dans la outputNodeNames
propriété.
En examinant le code à l’intérieur de l’exemple CPPEvalClient
de projet, affiche la ligne (non commentée) spécifiant la outputNodeNames
propriété :
networkConfiguration += "outputNodeNames=\"h1.z:ol.z\"\n";
networkConfiguration += "modelPath=\"" + modelFilePath + "\"";
model->CreateNetwork(networkConfiguration);
L’exécution du programme affiche la sortie correspondante pour la h1.z
couche.