Vue d’ensemble de l’utilisation de CNTK
Pour utiliser CNTK vous devez télécharger les fichiers binaires exécutables ou télécharger le code source et le compiler sur votre ordinateur (détails). Il existe trois tâches principales (ou actions) prises en charge par CNTK :
- Entraîner - Définir un réseau et l’entraîner pour produire un modèle entraîné à l’aide de données d’entraînement
- Évaluer - Tester un modèle entraîné pour évaluer ses performances à l’aide de données de test
- Déployer - Utiliser un modèle entraîné, par exemple dans votre propre solution, pour classifier de nouvelles instances
Une brève vue d’ensemble de chacune de ces tâches est fournie ci-dessous et des pointeurs vers une description plus détaillée sont fournis. En outre, il existe d’autres tâches qui CNTK prennent en charge, telles que modifier des modèles existants et écrire des sorties de nœud dans un fichier. Une description de ces rubriques est fournie dans la section Rubriques avancées de la page commandes de niveau supérieur .
Formation d’un modèle à l’aide de CNTK
L’apprentissage d’un réseau neuronal avec CNTK implique trois composants qui doivent être configurés :
- réseau : le réseau neuronal, y compris sa structure/formule, les paramètres de modèle. Les critères d’apprentissage et la métrique d’évaluation sont également inclus ici.
- lecteur : lecture des données d’apprentissage
- SGD : les hyper-paramètres du processus de dégradé stochastique
Vous devez fournir ces informations via un fichier de configuration comme premier argument lors de l’appel de l’exécutable CNTK. Le fichier de configuration utilise une syntaxe spécifique. Consultez la vue d’ensemble du fichier config pour plus d’informations sur les fichiers de configuration.
Dans les éléments suivants, nous utilisons la configuration CNTK et les résultats de l’exemple MNIST, en particulier la configuration « 01_OneHidden_ndl_deprecated.cntk » (voir Image/GettingStarted et 01_OneHidden.cntk pour plus d’informations).
La ligne de commande CNTK pour cet exemple est cntk configFile=01_OneHidden_ndl_deprecated.cntk
. L’extrait de code suivant fournit une vue d’ensemble du contenu du fichier de configuration pertinent pour l’entraînement.
modelDir = "$OutputDir$/Models"
deviceId = 0
command = MNISTtrain
modelPath = "$modelDir$/01_OneHidden"
MNISTtrain = [
action = "train"
# network definition
BrainScriptNetworkBuilder = (new ComputationNetwork
include "$ConfigDir$/01_OneHidden.bs"
)
# learner configuration
SGD = [
...
]
# reader configuration
reader = [
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Train-28x28_cntk_text.txt"
...
]
]
L’extrait de code ci-dessus définit une commande appelée MNISTtrain
avec action = "train"
. D’autres actions prises en charge sont par exemple test
ou write
. Le deviceId
paramètre spécifie s’il faut utiliser l’UC ou le GPU. Lorsque la valeur est "auto"
définie, CNTK choisira le meilleur appareil disponible. Définissez-le pour -1
utiliser l’UC ou sur une valeur >=0 pour utiliser un GPU spécifique. L’emplacement modelPath
défini pour stocker les modèles entraînés intermédiaires et finaux. Dans cet exemple, il utilise la ModelDir
variable définie au début du fichier de configuration.
Les trois principaux blocs de configuration pour l’entraînement définissent le réseau lui-même et les paramètres de l’algorithme d’apprentissage et du lecteur de données.
- Générateur de réseau : ici, vous définissez la topologie et les détails du réseau, tels que la taille et le nombre de couches et le type de nœuds. Vous pouvez utiliser le Générateur de réseau simple pour les modèles standard ou le Générateur de réseau BrainScript pour les modèles personnalisés. Reportez-vous aux pages correspondantes pour plus d’informations.
- SGD : ce bloc vous permet de paramétrer l’algorithme d’entraînement (descente de dégradé stochastique). Les options configurables incluent l’élan, le taux d’apprentissage adaptatif, la taille de minibatch adaptative, l’entraînement parallèle. Pour plus d’informations, consultez le bloc SGD .
- lecteur : le bloc de lecteur définit le lecteur à utiliser et où sont les fichiers d’entrée correspondants. CNTK fournit plusieurs lecteurs de données pour différents formats et tâches (voir Bloc Lecteur).
Enfin, la ligne command = MNISTtrain
spécifie laquelle des tâches définies à exécuter. Pour exécuter plusieurs tâches consécutivement, par exemple la formation et l’évaluation, ajoutez simplement plus de tâches à la commande séparée par un signe deux-points : command = "MNISTtrain:MNISTtest"
Évaluation d’un modèle entraîné
Pour évaluer la précision d’un modèle entraîné, vous utilisez le ou test
la eval
commande (voir également Train, Test, Eval pour plus d’informations). La configuration correspondante dans l’exemple MNIST 01_OneHidden.cntk se présente comme suit.
testNetwork = {
action = "test"
minibatchSize = 1024 # reduce this if you run out of memory
reader = {
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Test-28x28_cntk_text.txt"
input = {
features = { dim = 784 ; format = "dense" }
labels = { dim = 10 ; format = "dense" }
}
}
}
Le MNISTtest
bloc utilise action = "test"
. Pour l’action test
que vous devez définir un modèle qui doit être utilisé pour le test à l’aide du modelPath
paramètre. Dans cet exemple, il modelPath
n’est pas défini à l’intérieur du MNISTtest
bloc, mais au niveau supérieur (voir la partie d’entraînement ci-dessus) et est utilisé par les actions et test
les train
actions. Dans le reader
bloc, vous spécifiez le fichier de données à utiliser pour le test, Test-28x28.txt
dans l’exemple. Enfin, vous devez définir command = MNISTtest
et exécuter cntk configFile=01_OneHidden_ndl_deprecated.cntk
pour exécuter le test. Le résultat de la ligne de commande est le suivant :
Final Results: Minibatch[1-625]: errs = 2.39% * 10000; ce = 0.076812531 * 10000; Perplexity = 1.0798396
COMPLETED!
Utilisation d’un modèle entraîné dans votre propre code
Une fois que vous avez entraîné un modèle, vous avez besoin de la fonctionnalité pour évaluer le modèle dans votre environnement cible. CNTK fournit plusieurs façons de servir vos modèles dans différents scénarios. Vous pouvez utiliser un modèle entraîné à partir de C++, Python, C# ou d’autres langages .NET. Vous pouvez exécuter l’évaluation sur votre ordinateur ou dans Azure. La section Évaluation des modèles CNTK (voir barre latérale) contient de nombreux détails, notamment l’évaluation à l’aide de C++/Python/C#/Azure.
Étapes suivantes