Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
ParameterTensor{}
Erstellt einen Skalar, Vektor, Matrix oder Tensor von lernbaren Parametern.
ParameterTensor {shape,
init='uniform'/*|heNormal|...*/, initOutputRank=1, initValueScale=1.0,
randomSeed=-1,
initValue=0.0, initFromFilePath='',
learningRateMultiplier=1.0}
Parameter
shape: Form (Dimensionen) des Parameters als Array. So erstellen Sie z. B.(13:42)eine Matrix mit 13 Zeilen und 42 Spalten. Für einige Vorgänge werden Dimensionen, die als 0 angegeben sind, automatisch abgeleitet (siehe hier)init(Standard 'uniform'): Gibt zufällige Initialisierung an, z. B.init='heNormal'(siehe hier)initOutputRank(Standard 1): Gibt die Anzahl der führenden Fan-Out-Achsen an. Wenn negativ, -Anzahl der nachgestellten Fan-Out-Achsen (siehe hier)initValueScale(Standard 1): zusätzlicher Skalierungsfaktor, der auf zufällige Initialisierungswerte angewendet wirdrandomSeed(Standard -1): Wenn positiv, verwenden Sie diesen zufälligen Seed für die zufällige Initialisierung. Wenn negativ, verwenden Sie einen Zähler, der für jede Person erhöht wirdParameterTensor{}initValue: gibt die Initialisierung mit einem Konstantenwert an, z. B.initValue=0initFromFilePath: gibt die Initialisierung an, indem initiale Werte aus einer Datei geladen werden. Beispiel:initFromFilePath="my_init_vals.txt"learningRateMultiplier: System learning rate wird von diesem (0 zum Deaktivieren des Lernens) skaliert (siehe hier)
Rückgabewert
Ein Tensor von lernbaren Parametern.
BESCHREIBUNG
Diese Fabrikfunktion erstellt einen Skalar, Vektor, Matrix oder Tensor von lernbaren Parametern, also einen Tensor, der von der Aktion als Parameter erkannt wird, die während der "train" Schulung aktualisiert werden sollen.
Die Werte werden je nach angabe des optionalen Parameters initialisiert.
- Zufällige Zahlen, wenn
initangegeben; - eine Konstante, wenn
initValueangegeben wird; oder - ein Tensor, der von einer externen Eingabedatei gelesen wird, falls
initFromFilePathangegeben. Der Standardwert istinit="uniform".
Um einen Skalar, Vektor, Matrix oder Tensor mit Rang>2 zu erstellen, übergeben Sie folgendes als shape Parameter:
(1)für einen Skalar;(M)für einen Spaltenvektor mitMElementen;(1:N)für einen Zeilenvektor mitNElementen. Zeilenvektoren sind Einezeilenmatrizen;(M:N)für eine Matrix mitNZeilen undISpalten;(I:J:K...)für einen Tensor beliebiger Rang>2 (Hinweis: Die maximale zulässige Rangfolge ist 12); und(W:H:C)für einen Tensor, der den Dimensionen eines[W x H]Bilds mitCKanälen entspricht.
Automatische Dimensionableitung
Wenn eine ParameterTensor Für Gewichtung als sofortige Eingabe spezifischer Vorgänge verwendet wird, ist es zulässig, einige Dimensionen Inferredals anzugeben. Beispielsweise wird das MatrixproduktParameterTensor{42:Inferred} * x) automatisch die zweite Dimension auf die Dimension von x.
Dies ist äußerst praktisch für Eingaben von Ebenen, da er den BrainScript-Code des Benutzers aus der Belastung der Eingabedimensionen freigibt. Außerdem ist es in einigen Situationen sehr schwerfällig, die genauen Eingabedimensionen einer Schicht zu bestimmen, z. B. die erste voll verbundene Schicht auf einer Pyramide von Verbinder-/Pooling-Kombinationen ohne Abstand, wobei jede Konvolution und Pooling-Operation Zeilen oder Spalten von Begrenzungs pixeln ablegen kann, und strides skalieren die Dimensionen.
Dieses Feature ermöglicht es CNTK vordefinierten Ebenen, nur durch ihre Ausgabedimension (z. B. DenseLayer{1024}) angegeben zu werden.
Zufällige Initialisierung
Die zufällige Initialisierung wird vom init Parameter ausgewählt, der zwischen einheitlicher und normaler Verteilung entscheidet, wobei der Bereich/die Standardabweichung als Funktion von Fan-In und Fanout berechnet wird:
Wert von init |
Verteilung | Bereich/Standardabweichung |
|---|---|---|
| "heNormal" | normal | sqrt (2 / fanIn) |
| "heUniform" | uniform-Variable | sqrt (6 / fanIn) |
| "glorotNormal" | normal | sqrt (2 / (fanIn+fanOut)) |
| "glorotUniform" | uniform-Variable | sqrt (6 / (fanIn+fanOut)) |
| "xavier" | uniform-Variable | sqrt (3 / fanIn) |
| "Uniform" | uniform-Variable | 1/20 |
| "gaussian" | normal | sqrt (0,04 / fanIn) |
| "Null" | – | 0 |
(Wo zero ist eine manchmal bequeme Alternative zum Angeben initValue=0von .) Für die einheitliche Verteilung werden die Parameter einheitlich in [Bereich, Bereich] initialisiert; bei normaler Verteilung ist der Mittelwert immer null.
Beachten Sie, dass die Standardeinstellung init für die direkte Verwendung ParameterTensor{} istuniform.
Die Standardeinstellung ist glorotUniform jedoch für Ebenen , die Parameter innerhalb enthalten, z DenseLayer{} . B. und ConvolutionalLayer{}.
Fan-In und Fanout für zufällige Initialisierung
Die zufällige Initialisierung geht davon aus, dass die Parameter Teil eines Matrixprodukts sind, das einen gut definierten Fan-In und Fan-Out aufweist, der zum Bestimmen der Skalierung der Zufallswerte pro Tabelle verwendet wird. Standardmäßig gilt die erste Achse als Fanout, und die restliche Achse/Achsen sind Fan-In, übereinstimmende Semantik des regulären Matrixprodukts.
Der optionale Parameter initOutputRank kann verwendet werden, um die Anzahl der führenden Achsen anzugeben, die als Fanout angesehen werden sollten. Beispielsweise kann für ein Matrixprodukt in der erweiterten Tensorinterpretation CNTK ein [K]-dimensionales Vektor x zu einem [I x J]-dimensionalen Rang-2-Objekt geschrieben werden, wobei Times (W, x, outputRank=2)W die Form [I x J x K]enthalten ist.
initOutputRank=2 Hier gibt an, dass in der Skalierung der zufälligen Initialisierungswerte der Fanout und der Fan-In Kangegeben istI*J.
Negative Werte für initOutputRank die Angabe, dass die Fan-Out-Achsen Nachlaufachsen sind. Der Filterkern des ConvolutionalLayer{} und des zugrunde Convolution() liegenden Vorgangs für ein typisches Bildverarbeitungs-Setup weist beispielsweise eine Form [W x H x C x K]auf, wobei K es sich um den Fan-Out handelt, während sich das Fan-In W*H*Cbefindet.
Dies wird durch initOutputRank=-1.
Lesen von Anfangswerten aus Dateien
Die anfänglichen Werte können aus einer Textdatei gelesen werden. Übergeben Sie dazu einen Pfadnamen für den optionalen Parameter initFromFilePath.
Die Textdatei wird erwartet, dass eine Zeile pro Matrixzeile besteht, die aus leer getrennten Zahlen besteht, eine pro Spalte.
Die Zeilen- und Spaltendimensionen in der Datei müssen übereinstimmen shape.
Parameterspezifische Lernrate
Parameterspezifische Lernraten können mit dem optionalen learningRateMultiplier Parameter realisiert werden.
Dieser Faktor wird mit der tatsächlichen Lernrate multipliziert, wenn Parameterupdates ausgeführt werden.
Wenn sie beispielsweise als 0 angegeben sind, wird der Parameter nicht aktualisiert, ist es konstant.
Beispiele
Eine reguläre Parametermatrix, die als heUniform (Standardeinstellung heNormal) initialisiert wird:
W = ParameterTensor {(outDim:inDim), init=`heUniform`}
Ein regulärer Bias-Parameter, der als Null initialisiert wird:
b = ParameterTensor {outDim, initValue=0}
Eine einbettende Matrix, die aus einer Datei gelesen und konstant gehalten werden soll:
E = ParameterTensor {(embedDim:vocabSize),
initFromFilePath='./EmbeddingMatrix.txt',
learningRateMultiplier=0} # prevents learning
Ein Bias-Parameter der vollständigen Größe eines [width x height]Bilds mit numChannels Farbebenen:
bFull = ParameterTensor {(width:height:numChannels)}
Konstante{}
Erstellen Sie einen Konstanten-Tensor.
Constant {scalarValue, rows=1, cols=1}
Parameter
scalarValue: Wert dieser Konstanterows(Standard: 1): Anzahl der Zeilen, wenn die Konstante kein Skalar istcols(Standard: 1): Anzahl der Spalten, wenn die Konstante kein Skalar ist
Rückgabewert
Eine Konstante, entweder ein Skalar oder ein Rang-1- oder Rang-2-Objekt der Dimension [rows x cols], wo alle Elemente gefüllt scalarValuesind.
BESCHREIBUNG
Ein konstanter Wert. Es kann entweder ein Skalar oder ein Rang-1-Objekt (Vektor) oder ein Rang-2-Objekt (Matrix) sein, das mit einem einzelnen Wert (z. B. 0) initialisiert wird. Beachten Sie, dass für Vektor- und Matrixkonstanten alle Werte identisch sind, konstanten, die in Verbindung mit Element-weise-Vorgängen verwendet werden, häufig als Skalar angegeben werden können, während Sie die Übertragung nutzen.
Implementierungsnotiz:
A Constant() ist ein ParameterTensor{} mit learningRateMultiplier=0.
Beispiele
Interpolation zwischen zwei Werten mit Interpolation alpha gewicht im Bereich 0..1 ("soft multiplexer"):
SoftMUX (x, y, alpha) = Constant (1-alpha) .* x + Constant (alpha) .* y
Hamming-Verlust (siehe hier):
HammingLoss (y, p) = ReduceSum (BS.Boolean.Xor (y, Greater (p, Constant(0.5))))
hl = HammingLoss (multiLabels, probabilities)