Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
{} parametru
Vytvoří skalární, vektorovou, matici nebo tensor naučitelných parametrů.
ParameterTensor {shape,
init='uniform'/*|heNormal|...*/, initOutputRank=1, initValueScale=1.0,
randomSeed=-1,
initValue=0.0, initFromFilePath='',
learningRateMultiplier=1.0}
Parametry
-
shape: tvar (rozměry) parametru jako pole. Například(13:42)vytvořit matici s 13 řádky a 42 sloupci. U některých operací jsou dimenze zadané jako 0 automaticky odvozeny (viz zde) -
init(výchozí uniforma): určuje náhodnou inicializaci, napříkladinit='heNormal'(viz zde) -
initOutputRank(výchozí 1): Určuje počet úvodních os ventilátorů. Pokud je negativní, -number koncových os ventilátorů (viz zde) -
initValueScale(výchozí 1): další faktor škálování použitý na náhodné inicializační hodnoty -
randomSeed(výchozí -1): Pokud je kladné, použijte toto náhodné počáteční hodnoty pro náhodnou inicializaci. Pokud je záporná, použijte čítač, který se pro každouParameterTensor{}zvýší. -
initValue: určuje inicializaci konstantní hodnotou, např.initValue=0 -
initFromFilePath: určuje inicializaci načtením počátečních hodnot ze souboru. Např.initFromFilePath="my_init_vals.txt" -
learningRateMultiplier: rychlost systémového učení se bude škálovat tímto (0, aby se zakázalo učení) (viz zde)
Návratová hodnota
Tenzor možností učení parametrů.
Popis
Tato funkce továrny vytvoří skalární, vektorovou, matici nebo tensor naučitelných parametrů, tj. tenzor rozpoznaný akcí "train" jako obsahující parametry, které se během trénování aktualizují.
Hodnoty se inicializují v závislosti na tom, pro který volitelný parametr je zadaný.
- náhodná čísla, pokud
initje uvedena; - konstanta, je-li uvedena
initValue; nebo - Tensor přečte z externího vstupního souboru, pokud
initFromFilePath. Výchozí hodnota jeinit="uniform".
Pokud chcete vytvořit skalár, vektor, matici nebo tensor s pořadím>2, předejte jako parametr shape následující:
-
(1)skaláru; -
(M)vektoru sloupce s prvkyM; -
(1:N)pro vektor řádku s prvkyN. Vektory řádků jsou matice s jedním řádkem; -
(M:N)matice sNřádky a sloupciI; -
(I:J:K...)pro tensor libovolného pořadí>2 (poznámka: maximální povolené pořadí je 12); a -
(W:H:C)pro tensor, který odpovídá rozměrům[W x H]obrázku s kanályC.
Automatické odvození dimenzí
Pokud se ParameterTensor používá pro váhy jako okamžitý vstup konkrétních operací, je povoleno zadat některé dimenze jako Inferred. Například maticový součinParameterTensor{42:Inferred} * x) automaticky odvodí druhou dimenzi, která bude rovna dimenzi x.
To je velmi užitečné pro vstupy vrstev, protože uvolní kód BrainScriptu uživatele z zátěže předávání vstupních dimenzí. V některých situacích je navíc velmi těžkopádné určit přesné vstupní rozměry vrstvy, například pro první plně propojenou vrstvu nad jehlanem konvoluční/poolingové kombinace bez odsazení, kde každá konvoluce a operace sdružování může vypustit řádky nebo sloupce hraničních pixelů a kroky škálují rozměry.
Tato funkce umožňuje, aby předdefinované vrstvy CNTK byly určeny pouze jejich výstupní dimenzí (např. DenseLayer{1024}).
Náhodná inicializace
Náhodný inicializace je vybrána parametrem init, který vybírá mezi jednotným a normálním rozdělením, kde se oblast/směrodatná odchylka vypočítá jako funkce ventilátoru a ventilátoru:
hodnota init |
distribuce | oblast/směrodatná odchylka |
|---|---|---|
| "heNormal" | normální | sqrt (2 / fanIn) |
| HeUniform | rovnoměrný | sqrt (6 / fanIn) |
| "glorotNormal" | normální | sqrt (2 / (fanIn+fanOut)) |
| GlorotUniform | rovnoměrný | sqrt (6 / (fanIn+fanOut)) |
| "xavier" | rovnoměrný | sqrt (3 / fanIn) |
| "uniforma" | rovnoměrný | 1/20 |
| Gaussian | normální | sqrt (0,04 / fanIn) |
| Nula | není k dispozici | 0 |
(Kde zero je někdy vhodná alternativa k určení initValue=0.) Pro jednotné rozdělení budou parametry inicializovány jednotně v rozsahu [-range, range]; pro normální rozdělení je střední hodnota vždy nula.
Všimněte si, že výchozí nastavení pro init je při použití ParameterTensor{} přímo uniform.
Výchozí nastavení je však glorotUniform pro vrstvy , které obsahují parametry uvnitř, například DenseLayer{} a ConvolutionalLayer{}.
Ventilátor a ventilátor pro náhodnou inicializaci
Náhodná inicializace předpokládá, že parametry jsou součástí nějaké formy operace podobné maticovým produktům, která má dobře definovaný ventilátor a ventilátor, které se používají při určování měřítka náhodných hodnot podle výše uvedené tabulky. Ve výchozím nastavení je první osa považována za ventilátor a zbývající osa/osy jsou ventilátory, které odpovídají sémantice běžného maticového produktu.
Volitelný parametr initOutputRank lze použít k určení počtu úvodních os, které by se měly považovat za ventilátor. Například pro maticový součin v rozšířené interpretaci CNTK, která mapuje [K]-dimenzionální vektor x na objekt [I x J]-dimenzionální pořadí-2 lze zapsat jako Times (W, x, outputRank=2), kde W má tvar [I x J x K].
Zde initOutputRank=2 určuje, že při škálování hodnot náhodné inicializace je ventilátor I*J a ventilátor K.
Záporné hodnoty pro initOutputRank označují, že osy ventilátoru jsou koncové osy. Například jádro filtru ConvolutionalLayer{} a základní operace Convolution() pro typické nastavení zpracování obrázků má tvar [W x H x C x K], kde K je ventilátor, zatímco ventilátor je W*H*C.
To je určeno initOutputRank=-1.
Čtení počátečních hodnot ze souborů
Počáteční hodnoty lze číst z textového souboru. Uděláte to tak, že předáte název cesty pro volitelný parametr initFromFilePath.
Očekává se, že textový soubor bude obsahovat jeden řádek na řádky matice, které se skládají z čísel oddělených mezerami, jednoho sloupce.
Rozměry řádků a sloupců v souboru se musí shodovat s shape.
Míra učení specifická pro parametry
Míra učení specifická pro parametry je možné realizovat pomocí volitelného parametru learningRateMultiplier.
Tento faktor se vynásobí skutečnou rychlostí učení při provádění aktualizací parametrů.
Pokud je například zadán jako 0, parametr se neaktualizuje, je konstantní.
Příklady
Běžná matice parametrů, která se inicializuje jako heUniform (výchozí hodnota by byla heNormal):
W = ParameterTensor {(outDim:inDim), init=`heUniform`}
Běžný parametr předsudku, který se inicializuje jako nula:
b = ParameterTensor {outDim, initValue=0}
Vložená matice, která by se měla číst ze souboru a zachovat konstantu:
E = ParameterTensor {(embedDim:vocabSize),
initFromFilePath='./EmbeddingMatrix.txt',
learningRateMultiplier=0} # prevents learning
Parametr zkreslení plné velikosti obrázku [width x height]-size s numChannels rovinami barev:
bFull = ParameterTensor {(width:height:numChannels)}
Konstantní{}
Vytvoření konstantního tensoru
Constant {scalarValue, rows=1, cols=1}
Parametry
-
scalarValue: hodnota této konstanty -
rows(výchozí hodnota: 1): počet řádků, pokud konstanta není skalární -
cols(výchozí hodnota: 1): počet kol, pokud konstanta není skalární
Návratová hodnota
Konstanta, skalární nebo rank-1 nebo rank-2 objekt dimenze [rows x cols], kde jsou všechny prvky vyplněny scalarValue.
Popis
Konstantní hodnota. Může to být skalární objekt nebo objekt pořadí-1 (vektor) nebo rank-2 objekt (matice) inicializovaný jednou hodnotou (například 0). Všimněte si, že vzhledem k tomu, že pro vektorové a maticové konstanty jsou všechny hodnoty identické, konstanty používané ve spojení s operacemi moudrými prvky mohou být často zadány jako skalární a současně využívají vysílání.
Poznámka k implementaci:
Constant() je ParameterTensor{} s learningRateMultiplier=0.
Příklady
Interpolace mezi dvěma hodnotami s interpolační hmotností alpha v rozsahu 0..1 ("soft multiplexer"):
SoftMUX (x, y, alpha) = Constant (1-alpha) .* x + Constant (alpha) .* y
Ztráta hammingu (viz zde):
HammingLoss (y, p) = ReduceSum (BS.Boolean.Xor (y, Greater (p, Constant(0.5))))
hl = HammingLoss (multiLabels, probabilities)