Delen via


Opdrachten op het hoogste niveau met BrainScript

De hoofdopdracht train op het hoogste niveau entesteval/wordt beschreven op de pagina Train, Test, Eval. Hieronder worden verdere opdrachten op het hoogste niveau beschreven.

Opdracht Aanpassen

Met deze opdracht past u een al getraind model aan met behulp van KL divergence regularisatie. Het wordt aangeraden dat alle andere aanpassingen moeten worden uitgevoerd met behulp van modelbewerking. De opdracht voor aanpassen is vergelijkbaar met de opdracht Trainen, behalve dat deze twee parameters bevat:

  • originalModelFileName: de bestandsnaam van het model dat zal worden aangepast.

  • refNodeName: de naam van het knooppunt in het rekennetwerk dat wordt gebruikt voor de regularisatie van KL-divergentie.

CV

Met deze opdracht wordt een reeks modellen uit verschillende tijdvakken geëvalueerd voor een ontwikkelingsset (of kruisvalidatie) en wordt de informatie van het beste model weergegeven. Naast de parameters die worden gebruikt voor de testopdracht, gebruikt deze opdracht ook de parameters

  • crossValidationInterval: de matrix van 3 gehele getallen die het begintijdperk, de epoch-verhoging en het laatste tijdvak identificeren om te evalueren. 3:2:9 betekent bijvoorbeeld dat de modellen 3,5,7 en 9 worden geëvalueerd.

  • sleepTimeBetweenRuns: hoeveel seconden er moet worden gewacht tussen uitvoeringen. Dit is alleen nodig als uw GPU te heet is.

Opdracht Schrijven

Met deze opdracht wordt de waarde van een uitvoerknooppunt naar een bestand geschreven. De gerelateerde parameters zijn

  • reader: het configuratieblok van de lezer om de invoergegevens te lezen.

  • writer: het schrijfconfiguratieblok om te bepalen hoe de uitvoergegevens moeten worden geschreven. Als deze waarde niet is opgegeven, wordt de outputPath-parameter gebruikt.

  • minibatchSize: de minibatchgrootte die moet worden gebruikt bij het lezen en verwerken van de gegevensset.

  • epochSize: de grootte van de gegevensset. De standaardwaarde is 0. De volledige gegevensset wordt geëvalueerd als deze is ingesteld op 0.

  • modelPath: het pad naar het model dat moet worden gebruikt om de uitvoer te berekenen.

  • outputPath: het pad naar het bestand om de uitvoer in een tekstindeling te schrijven. Als het writer-blok bestaat, wordt deze parameter genegeerd. OutputPath of writer moet bestaan.

  • outputNodeNames: een matrix van een of meer uitvoerknooppuntnamen die naar een bestand moeten worden geschreven.

Opdracht bewerken

Met deze opdracht wordt een model bewerkt en wordt het gewijzigde model opgeslagen in het bestand. Dit is afgeschaft. De bijbehorende parameters zijn:

  • editPath: het pad naar het MEL-script dat moet worden uitgevoerd.
  • ndlMacros: het pad naar het NDL-macrobestand dat wordt geladen en gebruikt in het MEL-script.

SVD-opdracht

Met deze opdracht wordt een benadering met lage rang uitgevoerd met SVD-ontleding van leerbare parameters. De belangrijkste motivatie is om een gewichtsmatrix met twee matrices met lagere rang te factoriseren om de deductiesnelheid te verbeteren, terwijl de nauwkeurigheid behouden blijft. Bijvoorbeeld:

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

De bijbehorende parameterblokken zijn:

  • modelPath: geeft aan waar het eerste model moet worden geladen.

  • outputModelPath: geeft aan waar het herziene model moet worden opgeslagen.

  • SVDConfig: een configuratiebestand dat aangeeft hoe de SVD wordt uitgevoerd voor verschillende groepen knooppunten. Deze configuratie heeft een indeling met twee kolommen:

    <NodeNameRegex> <float>

De eerste kolom is een reguliere expressie die overeenkomt met de naam van het knooppunt in één groep. De tweede kolom is een float die aangeeft welk percentage van SVDenergy wordt bewaard na SVD, waarbij SVD-energie wordt gedefinieerd als de som van enkelvoudige waarden. Bijvoorbeeld de configuratie

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

veroorzaakt een agressievere SVD (0.4) decompositie voor de niet-terugkerende verbindingen (van x naar i,f,c,o gates) in LSTM en minder agressieve SVD-ontleding voor terugkerende verbindingen (van h tot i,f,c,o gates), waarbij de parameternamen worden gedefinieerd in de NDL.

Dumpnode-opdracht

Met deze opdracht wordt de informatie van knooppunt(en) naar een uitvoerbestand gedumpt, wat ook kan worden uitgevoerd in MEL met meer controle. De gerelateerde parameters zijn:

  • modelPath: het pad naar het modelbestand met de knooppunten die moeten worden gedumpt.

  • nodeName: de naam van het knooppunt dat naar een bestand moet worden geschreven. Als niet alle knooppunten zijn opgegeven, worden ze gedumpt.

  • nodeNameRegex: de reguliere expressie voor de namen van de knooppunten die naar een bestand moeten worden geschreven. Indien opgegeven, wordt de nodeName parameter genegeerd.

  • outputFile: het pad naar het uitvoerbestand. Als er geen bestandsnaam is opgegeven, wordt automatisch gegenereerd op basis van het modelPath.

  • printValues: bepaalt of de waarden die zijn gekoppeld aan een knooppunt moeten worden afgedrukt als de waarden van het knooppunt behouden blijven in het model. De standaardwaarde is true.

  • printMetadata: bepaalt of de metagegevens (knooppuntnaam, dimensies, enzovoort) die aan een knooppunt zijn gekoppeld, moeten worden afgedrukt. De standaardwaarde is true.

Opdracht WriteWordAndClass (afgeschaft)

Met deze opdracht worden de teksttrainingsgegevens gelezen, wordt het aantal exemplaren van elk woord in de trainingsset geteld, worden de woorden in aflopende volgorde van de aantallen gesorteerd, wordt elk woord een unieke id gegeven, wordt elk woord toegewezen aan een klasse en wordt een bestand met vier kolommen woordenschat en een toewijzingsbestand voor woord-naar-id gegenereerd dat door lmsequenceReader wordt gebruikt om taalmodellen op basis van klassen te trainen. De gerelateerde parameters zijn:

  • inputFile: het pad naar het tekstbestand.

  • outputVocabFile: de naam van het gegenereerde woordenlijstbestand met vier kolommen. De eerste kolom is de woord-id, de tweede kolom is het aantal woorden, de derde kolom is het woord en de vierde kolom is de klasse-id.

  • outputWord2Cls: het pad naar het gegenereerde word-to-class-toewijzingsbestand.

  • outputCls2Index: het pad naar het gegenereerde class-to-wordId-toewijzingsbestand.

  • vocabSize: de gewenste vocabulaire grootte.

  • nbrClass: het gewenste aantal klassen.

  • cutoff: de afkaptelling. Wanneer het aantal woorden onder of gelijk is aan deze waarde, wordt het woord behandeld als . De standaardwaarde is 2. Houd er rekening mee dat deze parameter alleen wordt gebruikt als de gewenste woordenschat groter is dan het werkelijke aantal woorden in de trainingsset.

Opdracht CreateLabelMap

Vaak is het eenvoudig om handmatig het labeltoewijzingsbestand te maken. Soms wilt u echter liever dat het labeltoewijzingsbestand automatisch wordt gegenereerd. Dit is het doel van de opdracht CreateLabelMap. Momenteel is UCIFastReader de enige lezer die deze actie ondersteunt. De gerelateerde parameters zijn

  • section: de naam van het parameterblok (meestal een treinblok) met het subblok lezer dat wordt gebruikt om het labeltoewijzingsbestand te genereren. Het gegenereerde labeltoewijzingsbestand wordt opgeslagen in het labelMappingFile dat is opgegeven in het subblok lezer van dit parameterblok.

  • minibatchSize: de minibatchgrootte die moet worden gebruikt bij het maken van het labeltoewijzingsbestand.

Opdracht DoEncoderDecoder

Neurale netwerken kunnen worden gebruikt om een keten van netwerken te vormen. De eerste verschillende netwerken kunnen werken als encoders en de volgende netwerken kunnen fungeren als decoders. Een speciaal knooppunt, PairNetworkNode, wordt in elk netwerk gebruikt om een socket te bedienen die door andere netwerken moet worden verbonden. De gerelateerde parameters zijn

  • section: encoderReader en decoderReader zijn de lezers voor encoder en decoder. Op dezelfde manier voor encoderCVReader en decoderCVReader voor validatieset.

  • encoderNetworkBuilder en decoderNetworkBuilder: Deze geven de eenvoudige netwerkbouwer op die moet worden gebruikt.

BNStat-opdracht

Het evalueren van het gemiddelde en de variantie van het evalueren en testen van gegevenssets voor het batchnormalisatieknooppunt is lastig. Hoewel het gemiddelde en de variantie kunnen worden berekend via het lopende gemiddelde of de exp tijdens de training, bieden we nog steeds een stabielere en robuustere methode om het gemiddelde en de variantie van batchnormalisatie te genereren- Post batchnormalisatiestatistieken. De opdracht moet na de training worden aangeroepen. Het genereert het gemiddelde en de variantie voor elke BN-laag.

  • modelPath: het pad naar het modelbestand met getraind model
  • minibatchSize: de minibatchgrootte tijdens het evalueren, hetzelfde met trainings-minibatchSize
  • itersPerNode: de statistische iteraties voor elk batchnormalisatieknooppunt
  • reader: het configuratieblok van de lezer om de testgegevens te lezen. Zie Lezerblok voor meer informatie
  • enableDistributedMBReading: gedistribueerd lezen in parallelle training