Partager via


Vue d’ensemble du fichier config BrainScript

Pour exécuter CNTK vous utilisez une ligne de commande similaire à cntk configFile=yourExp.cntk celle où votreExp.cntk est un fichier de configuration CNTK, qui contient généralement plusieurs blocs de commandes. Un bloc de commandes est un bloc de niveau supérieur de la configuration. Chaque bloc de commandes doit spécifier l’action à effectuer avec des informations connexes. Pour illustrer les blocs de configuration et de commande, nous utilisons un exemple simple ci-dessous (extrait de l’exemple MNIST).

rootDir = ".."   # often, this is overwritten on the command line

configDir = "$rootDir$/Config"
dataDir   = "$rootDir$/Data"
outputDir = "$rootDir$/Output"
modelDir  = "$outputDir$/Models"

command = mnistTrain

mnistTrain = [
    action = "train"

    # network definition
    BrainScriptNetworkBuilder = (new ComputationNetwork
        include "$ConfigDir$/01_OneHidden.bs"
    )

    # SGD learner configuration
    SGD = [
        modelPath = "$ModelDir$/01_OneHidden_Model.dnn"
        epochSize = 60000
        minibatchSize = 32
        learningRatesPerMB = 0.1
        maxEpochs = 30
    ]

    # reader configuration    
    reader = [
        readerType = "CNTKTextFormatReader"
        file = "$DataDir$/Train-28x28_cntk_text.txt"
        input = [
            features = [
                dim = 784
                format = "dense"
            ]
            labels = [
                dim = 10
                format = "dense"
            ]
        ]
    ]
]

Dans cet exemple, vous pouvez remarquer que toutes les valeurs de configuration sont spécifiées en tant que paire nom-valeur. Une valeur peut être une valeur numérique, une chaîne, une liste ou même un bloc de configurations. Vous pouvez spécifier des variables, telles que DataDir dans cet exemple, et les renvoyer plus loin dans le script à l’aide de la notation $DataDir$.

Le paramètre command de configuration de niveau supérieur détermine les blocs de commandes à exécuter et dans quel ordre ils sont exécutés si plusieurs blocs de commandes sont spécifiés. Dans cet exemple, le mnistTrain bloc de commandes est exécuté. Ce bloc de commandes spécifie l’action à exécuter, qui se trouve train dans ce cas. Il existe souvent trois blocs de paramètres associés à l’action d’apprentissage :

  • un bloc de générateur de réseau, qui spécifie comment générer un réseau à partir de zéro et comment charger un modèle à partir d’un fichier de modèle existant,
  • un bloc d’apprenants, qui spécifie l’algorithme d’apprentissage à utiliser,
  • un bloc de lecteur, qui spécifie où et comment charger des caractéristiques et des étiquettes.

Dans cet exemple spécifique, le générateur de réseau indiqué par le bloc BrainScriptNetworkBuilder est utilisé pour définir le réseau, l’algorithme d’apprentissage de descente de dégradé stochastique comme indiqué par le bloc SGD est utilisé pour entraîner le modèle, et le lecteur de format de texte CNTK est utilisé pour charger les fonctionnalités et les étiquettes des fichiers au format texte CNTK. Notez que les lecteurs sont implémentés en tant que DLL distinctes, et que le nom du lecteur est également le nom du fichier DLL qui sera chargé pour lire les données.

Les blocs de configuration les plus fréquemment utilisés sont les suivants :

  • Générateurs de réseau
    • SimpleNetworkBuilder : crée l’un des réseaux prédéfinis avec une personnalisation limitée.
    • BrainScriptNetworkBuilder : crée un réseau défini à l’aide du langage de description réseau de CNTK (BrainScript). Il offre une flexibilité totale dans la conception de vos propres opérations et structure réseau.
  • Apprenants
    • SGD : utilise l’algorithme de descente de dégradé stochastique pour entraîner le modèle. Il s’agit du formateur souhaité pour la plupart des applications.
  • Lecteurs de données
    • CNTK Lecteur de format de texte : lit le format de CNTK textuel, qui prend en charge plusieurs entrées combinées dans le même fichier.
    • Lecteur rapide UCI (déconseillé) : lit le format UCI textuel, qui contient des étiquettes et des fonctionnalités combinées dans un fichier.
    • Lecteur HTKMLF : lit les fichiers de format HTK/MLF, souvent utilisés dans les applications de reconnaissance vocale.
    • Lecteur de séquence LM : lit des fichiers textuels qui contiennent des séquences de mots, pour prédire des séquences de mots. Cela est souvent utilisé dans la modélisation du langage.
    • Lecteur de séquence LU : lit les fichiers textuels qui contiennent des séquences de mots et leurs étiquettes. Cela est souvent utilisé pour la compréhension du langage.

Dans les sous-sections suivantes, nous allons décrire CNTK configuration et les blocs ci-dessus en détail. Vous pouvez également accéder aux blocs individuels à l’aide des liens dans le texte ci-dessus.

Voir aussi