Partager via


Commandes de niveau supérieur avec BrainScript

La commande train principale de niveau supérieur et eval/test sont décrites dans la page Train, Test, Eval . D’autres commandes de niveau supérieur sont détaillées ci-dessous.

Adapter la commande

Cette commande adapte un modèle déjà entraîné à l’aide de la normalisation des divergences KL. Il est conseillé d’effectuer toutes les autres adaptations à l’aide de la modification de modèle. La commande adapt est très similaire à la commande d’apprentissage, sauf qu’elle comporte deux autres paramètres :

  • originalModelFileName: nom de fichier du modèle qui sera adapté.

  • refNodeName: nom du nœud dans le réseau de calcul qui sera utilisé pour la normalisation de la divergence KL.

CV

Cette commande évalue une série de modèles de différentes époques sur un jeu de développement (ou validation croisée) et affiche les informations du meilleur modèle. Outre les paramètres utilisés pour la commande de test, cette commande utilise également les paramètres

  • crossValidationInterval: tableau de 3 entiers identifiant l’époque de départ, l’incrément d’époque et l’époque finale à évaluer. Par exemple, 3:2:9 signifie que les modèles 3,5,7 et 9 seront évalués.

  • sleepTimeBetweenRuns: combien de secondes attendre entre les exécutions. Cela n’est nécessaire que si votre GPU est trop chaud.

Écrire la commande

Cette commande écrit la valeur d’un nœud de sortie dans un fichier. Les paramètres associés sont

  • reader: bloc de configuration du lecteur pour lire les données d’entrée.

  • writer: bloc de configuration de l’enregistreur pour déterminer comment écrire les données de sortie. Si cette valeur n’est pas spécifiée, le paramètre outputPath est utilisé.

  • minibatchSize: taille minibatch à utiliser lors de la lecture et du traitement du jeu de données.

  • epochSize: taille du jeu de données. La valeur par défaut est 0. L’ensemble du jeu de données sera évalué s’il est défini sur 0.

  • modelPath: chemin d’accès au modèle à utiliser pour calculer la sortie.

  • outputPath: chemin d’accès au fichier pour écrire la sortie dans un format texte. Si le bloc d’enregistreur existe, ce paramètre est ignoré. OutputPath ou writer doit exister.

  • outputNodeNames: tableau d’un ou plusieurs noms de nœuds de sortie à écrire dans un fichier.

Modifier la commande

Cette commande modifie un modèle et enregistre le modèle modifié dans le fichier. Cette option est déconseillée. Les paramètres associés sont les suivants :

  • editPath: chemin d’accès au script MEL à exécuter.
  • ndlMacros: chemin d’accès au fichier de macros NDL qui sera chargé et utilisé dans le script MEL.

Commande SVD

Cette commande effectue une approximation de faible rang avec la décomposition SVD des paramètres apprenants. La principale motivation consiste à factoriser une matrice de poids avec deux matrices de rang inférieur pour améliorer la vitesse d’inférence, tout en conservant la précision. Par exemple :

svd = [
    action = "SVD"
    modelPath = "train\lstm.model.67"
    outputModelPath = "train\lstm.model.svd"
    SVDConfig = "nodeConfigs"
]

Les blocs de paramètres associés sont les suivants :

  • modelPath: spécifie où charger le modèle initial.

  • outputModelPath: spécifie où enregistrer le modèle révisé.

  • SVDConfig: fichier de configuration qui spécifie la façon dont le SVD est effectué pour différents groupes de nœuds. Cette configuration est au format à deux colonnes :

    <NodeNameRegex> <float>

La première colonne est une expression régulière qui correspond au nom du nœud dans un groupe. La deuxième colonne est un flotteur indiquant le pourcentage de SVD energy qui sera conservé après SVD, où l’énergie SVD est définie comme la somme des valeurs singulières. Par exemple, la configuration

`LSTMoutput[1-3].Wx[ifco] 0.4`
`LSTMoutput[1-3].Wh[ifco] 0.6`

provoquera une décomposition SVD plus agressive (0,4) pour les connexions non récurrentes (de x à i,f,c,o gates) dans LSTM et la décomposition svD moins agressive pour les connexions récurrentes (de h à i,f,c,o gates), où les noms de paramètres sont définis dans le NDL.

Commande Dumpnode

Cette commande vide les informations du ou des nœuds dans un fichier de sortie, qui peut également être effectuée dans MEL avec un meilleur contrôle. Les paramètres associés sont les suivants :

  • modelPath: chemin d’accès au fichier modèle contenant les nœuds à vider.

  • nodeName: nom du nœud à écrire dans un fichier. Si tous les nœuds ne sont pas spécifiés, ils sont vidés.

  • nodeNameRegex: expression régulière pour les noms des nœuds à écrire dans un fichier. Si spécifié, le nodeName paramètre est ignoré.

  • outputFile: chemin d’accès au fichier de sortie. Si aucun nom de fichier n’est spécifié, il est généré automatiquement en fonction du modelPath.

  • printValues: détermine s’il faut imprimer les valeurs associées à un nœud si les valeurs du nœud sont conservées dans le modèle. La valeur par défaut est true.

  • printMetadata: détermine s’il faut imprimer les métadonnées (nom de nœud, dimensions, etc.) associées à un nœud. La valeur par défaut est true.

WriteWordAndClass Command (déconseillé)

Cette commande lit les données d’apprentissage du texte, compte le nombre d’occurrences de chaque mot dans le jeu d’entraînement, trie les mots dans l’ordre décroissant du nombre, donne à chaque mot un ID unique, affecte chaque mot à une classe et génère un fichier de vocabulaire de quatre colonnes et un fichier de mappage word-à-id à utiliser par le LMSequenceReader pour entraîner des modèles linguistiques basés sur des classes. Les paramètres associés sont les suivants :

  • inputFile: chemin d’accès au fichier d’entraînement texte.

  • outputVocabFile: nom du fichier de vocabulaire à quatre colonnes généré. La première colonne est l’ID de mot, la deuxième colonne est le nombre de mots, la troisième colonne est le mot, et la quatrième colonne est l’ID de classe.

  • outputWord2Cls: chemin d’accès au fichier de mappage word à classe généré.

  • outputCls2Index: chemin d’accès au fichier de mappage de classe à wordId généré.

  • vocabSize: taille de vocabulaire souhaitée.

  • nbrClass: nombre souhaité de classes.

  • cutoff: le nombre de coupures. Quand le nombre d’un mot est inférieur ou égal à cette valeur, le mot sera traité comme . La valeur par défaut est 2. Notez que ce paramètre est utilisé uniquement si la taille de vocabulaire souhaitée est supérieure au nombre réel de mots dans le jeu d’entraînement.

CreateLabelMap, commande

Il est souvent facile de créer manuellement le fichier de mappage d’étiquettes. Toutefois, vous préférez parfois que le fichier de mappage d’étiquettes soit généré automatiquement, qui est l’objectif de la commande CreateLabelMap. Actuellement, UCIFastReader est le seul lecteur qui prend en charge cette action. Les paramètres associés sont

  • section: nom du bloc de paramètre (généralement un bloc d’apprentissage) qui a le sous-bloc lecteur qui sera utilisé pour générer le fichier de mappage d’étiquettes. Le fichier de mappage d’étiquettes généré est enregistré dans le labelMappingFile spécifié dans le sous-bloc lecteur de ce bloc de paramètres.

  • minibatchSize: taille de minibatch à utiliser lors de la création du fichier de mappage d’étiquettes.

Commande DoEncoderDecoder

Les réseaux neuronaux peuvent être utilisés pour former une chaîne de réseaux. Les premiers réseaux peuvent fonctionner en tant qu’encodeurs et les réseaux suivants peuvent servir de décodeurs. Un nœud spécial, PairNetworkNode, est utilisé dans chaque réseau pour servir un socket à connecter par d’autres réseaux. Les paramètres associés sont

  • section: encoderReader et décoderReader sont les lecteurs de l’encodeur et du décodeur. De même pour encoderCVReader et décoderCVReader pour le jeu de validation.

  • encoderNetworkBuilder et decoderNetworkBuilder: spécifiez le générateur de réseau simple à utiliser.

Commande BNStat

L’évaluation de la moyenne et de la variance de l’évaluation et du jeu de données de test pour le nœud de normalisation par lots est difficile. Bien que la moyenne et la variance puissent être calculées par le biais d’une moyenne en cours d’exécution ou d’exp pendant l’entraînement, nous avons toujours tendance à fournir une méthode plus stable et robuste pour générer la moyenne et la variance de la normalisation par lots -- Après les statistiques de normalisation de lot. La commande doit être appelée après l’entraînement. Elle génère la moyenne et la variance pour chaque couche BN.

  • modelPath: chemin d’accès au fichier de modèle contenant le modèle entraîné
  • minibatchSize: taille de mini-lot lors de l’évaluation, identique à celle de minibatchSize d’entraînement
  • itersPerNode: itérations de statistiques pour chaque nœud de normalisation de lot
  • reader: bloc de configuration du lecteur pour lire les données de test. Pour plus d’informations, voir Bloc Lecteur
  • enableDistributedMBReading: lecture distribuée en entraînement parallèle