Delen via


Eenvoudige netwerkbouwer

Hiermee SimpleNetworkBuilder kunt u eenvoudige standaardnetwerktypen met enkele configuratieregels gebruiken. Er wordt slechts een beperkte set configuratieopties ondersteund. Complexere netwerken kunnen worden gedefinieerd met behulp van in BrainScriptNetworkBuilder plaats daarvan.

Als u wilt gebruiken SimpleNetworkBuilder, moet u een configuratieblok met dezelfde naam opnemen in uw trainingsconfiguratie. Wanneer een optie wordt weggelaten, wordt uitgegaan van de standaardwaarde. We geven eerst een beknopt voorbeeld en vermelden hieronder alle besturingsparameters en opties.

SimpleNetworkBuilder = [
    # 2 inputs, 2 hidden layers with 50 element nodes each, 2 outputs
    layerSizes        = 2:50*2:2
    trainingCriterion = "CrossEntropyWithSoftmax"
    evalCriterion     = "ErrorPrediction"
    layerTypes        = "Sigmoid"
    applyMeanVarNorm  = true
]

In het bovenstaande voorbeeld kunnen 'trainingCriterion' en 'layerTypes' worden weggelaten omdat ze de standaardwaarden gebruiken. De volgende parameters zijn beschikbaar:

  • initValueScale: de waarde voor het schalen van het bereik van de willekeurige getallen die worden gebruikt voor initialisatie. De standaardinstelling is 1. Als de modelparameters worden geïnitialiseerd met behulp van de uniforme verdeling, wordt het willekeurige getalbereik aangepast aan [-0.05 * initValueScale, 0.05 * initValueScale]. Als de modelparameters worden geïnitialiseerd met behulp van de Gaussiaanse verdeling, wordt de standaarddeviatie aangepast aan 0.2 * initValueScale * fanout^(-1/2).

  • layerTypes: het type niet-lineaire bewerking in verborgen lagen. Geldige waarden zijn Sigmoid (standaard), Tanhen RectifiedLinear.

  • uniformInit: bepaalt of een uniforme distributie moet worden gebruikt om modelparameters te initialiseren. Geldige waarden zijn true (standaard) en false (met gaussiische distributie om modelparameters te initialiseren).

  • applyMeanVarNorm: of de gemiddelde/variantienormalisatie op de invoer moet worden toegepast. Geldige waarden zijn true en false (standaard).

  • addDropoutNodes: of er vervolgkeuzelijsten moeten worden toegevoegd. De standaardwaarde is false. Als dit is opgegeven true, wordt een vervolgkeuzelijst toegepast op het invoerknooppunt en de uitvoer van elke verborgen laag.

  • layerSizes: geeft de dimensies van lagen op. Beschrijft bijvoorbeeld layerSizes=128:10:200:4000 een neuraal netwerk met twee verborgen lagen. De eerste verborgen laag heeft een dimensie van 10 en de tweede verborgen laag heeft een dimensie van 200. De invoer- en uitvoerlagen hebben respectievelijk een dimensie van 128 en 4000.

  • trainingCriterion: het criterium dat wordt gebruikt voor training. De standaardwaarde is CrossEntropyWithSoftmax. Alternatieven zijn SquareError, CrossEntropyen ClassBasedCrossEntropyWithSoftmax. Het ClassBasedCrossEntropyWithSoftmax is bedoeld voor op klassen gebaseerde training, wat nuttig zou zijn als de uitvoerdimensie groot is en daarom moet worden opgesplitst in klassen om de training en evaluatie te versnellen.

  • evalCriterion: het criterium voor evaluatie. De selectie van waarden is hetzelfde als de trainingCriterion.

  • lookupTableOrder: hiermee geeft u de volgorde op van de context die wordt uitgebreid in de lookupNode. De standaardwaarde is 1. Als u deze instelt op een waarde zoals 3, wordt de invoerdimensie op een contextafhankelijke manier uitgebreid met een volgorde van 3. Als de invoerobservatie bijvoorbeeld een dimensie van 20 heeft, stelt u deze waarde in op 3 om de dimensie van het invoerknooppunt in te stellen op 60.

Voor terugkerende neurale netwerken (RNN's) zijn er aanvullende parameters.

  • recurrentLayer: hiermee geeft u de lagen op die zelf terugkerende verbindingen bevatten. Standaard is er geen terugkerende laag. Gebruik de syntaxis n1:n2:n3 om op te geven dat lagen n1, n2 en n3 terugkerende verbindingen hebben.

  • defaultHiddenActivity: de standaardwaarde voor verborgen laagactiviteit die wordt gebruikt door het vertragingsknooppunt bij het openen van waarden vóór de eerste observatie. De standaardwaarde is 0.1.

  • rnnType: het type vooraf gedefinieerde netwerken. Geldige waarden zijn:

    • SIMPLENET: het neurale netwerk van de feed-forward. Dit is het standaardnetwerktype.
    • SIMPLERNN: de eenvoudige RNN, die een diepe RNN kan zijn waarin verschillende lagen terugkerende lussen hebben.
    • CLASSLM: de op klassen gebaseerde eenvoudige RNN. Er wordt gebruikgemaakt van sparse-invoer, sparseparameter en sparse-uitvoer. Dit wordt vaak gebruikt voor taalmodelleringstaken.
    • LBLM: het log-bilineaire neurale netwerk.
    • LSTM: het neurale netwerk voor langetermijngeheugen op korte termijn.
    • CLASSLSTM: het op klassen gebaseerde neurale netwerk voor langetermijngeheugen op korte termijn. Er wordt gebruikgemaakt van sparse-invoer, sparseparameter en sparse-uitvoer. Dit wordt vaak gebruikt voor taalmodelleringstaken.

Volgende: Definieer uw eigen complexe netwerken met BrainScriptNetworkBuilder.