Generatore di rete semplice

Consente SimpleNetworkBuilder di usare tipi di rete standard semplici con poche righe di configurazione. È supportato solo un set limitato di opzioni di configurazione. È possibile definire reti più complesse usando invece.BrainScriptNetworkBuilder

Per usare SimpleNetworkBuilder, includere un blocco di configurazione dello stesso nome nella configurazione del training. Quando viene omessa un'opzione, viene assunto il valore predefinito. Per prima cosa viene fornito un esempio conciso e si elencano tutti i parametri di controllo e le opzioni seguenti.

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
]

Nell'esempio precedente 'trainingCriterion' e 'layerTypes' potrebbe essere omesso poiché usano i valori predefiniti. Sono disponibili i parametri seguenti:

  • initValueScale: valore per il ridimensionamento dell'intervallo dei numeri casuali usati per l'inizializzazione. Il valore predefinito è 1. Se i parametri del modello vengono inizializzati usando la distribuzione uniforme, l'intervallo di numeri casuali verrà modificato in [-0.05 * initValueScale, 0.05 * initValueScale]. Se i parametri del modello vengono inizializzati usando la distribuzione Gaussian, la deviazione standard verrà modificata in 0.2 * initValueScale * fanout^(-1/2).

  • layerTypes: tipo di operazione non lineare in livelli nascosti. I valori validi sono Sigmoid (impostazione predefinita), Tanh e RectifiedLinear.

  • uniformInit: determina se usare la distribuzione uniforme per inizializzare i parametri del modello. I valori validi sono true (impostazione predefinita) e false (usando la distribuzione gaussian per inizializzare i parametri del modello).

  • applyMeanVarNorm: se applicare la normalizzazione media/varianza nell'input. I valori validi sono true e false (impostazione predefinita).

  • addDropoutNodes: se aggiungere nodi di eliminazione. Il valore predefinito è false. Se specificato in true, verrà applicato un nodo a discesa al nodo di input e all'output di ogni livello nascosto.

  • layerSizes: specifica le dimensioni dei livelli. Ad esempio, layerSizes=128:10:200:4000 descrive una rete neurale con due livelli nascosti. Il primo livello nascosto ha una dimensione pari a 10 e il secondo livello nascosto ha una dimensione pari a 200. I livelli di input e output hanno rispettivamente una dimensione pari a 128 e 4000.

  • trainingCriterion: criterio utilizzato per la formazione. Il valore predefinito è CrossEntropyWithSoftmax. Le alternative sono SquareError, CrossEntropye ClassBasedCrossEntropyWithSoftmax. Si ClassBasedCrossEntropyWithSoftmax tratta di un training basato sulla classe, che sarebbe utile se la dimensione di output è grande e quindi deve essere suddivisa in classi per velocizzare la formazione e la valutazione.

  • evalCriterion: criterio per la valutazione. La selezione dei valori è uguale a .trainingCriterion

  • lookupTableOrder: specifica l'ordine di espansione del contesto nel lookupNode. Il valore predefinito è 1. Impostandolo su un valore come 3 si espanderebbe la dimensione di input in modo dipendente dal contesto in base a un ordine di 3. Ad esempio, se l'osservazione di input ha una dimensione pari a 20, impostare questo valore su 3 imposta la dimensione del nodo di input su 60.

Per le reti neurali ricorrenti (RNN), sono disponibili parametri aggiuntivi.

  • recurrentLayer: specifica i livelli che contengono connessioni auto ricorrenti. Per impostazione predefinita, non esiste alcun livello ricorrente. Usare la sintassi n1:n2:n3 per specificare che i livelli n1, n2 e n3 hanno connessioni ricorrenti.

  • defaultHiddenActivity: il valore predefinito dell'attività del livello nascosto utilizzato dal nodo ritardo durante l'accesso ai valori prima della prima osservazione. Il valore predefinito è 0.1.

  • rnnType: tipo di reti predefinite. I valori validi sono:

    • SIMPLENET: la rete neurale feed-forward. Si tratta del tipo di rete predefinito.
    • SIMPLERNN: il RNN semplice, che può essere un RNN profondo in cui diversi livelli hanno cicli ricorrenti.
    • CLASSLM: RNN semplice basato sulla classe. Usa input sparse, parametro sparse e output sparse. Questa operazione viene spesso usata per le attività di modellazione del linguaggio.
    • LBLM: la rete neurale log-bilinear.
    • LSTM: la rete neurale a breve termine di memoria a breve termine.
    • CLASSLSTM: la rete neurale di memoria a breve termine basata sulla classe. Usa input sparse, parametro sparse e output sparse. Questa operazione viene spesso usata per le attività di modellazione del linguaggio.

Successivamente: definire le proprie reti complesse con BrainScriptNetworkBuilder.