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.
Definuje vstup, který je podáván čtenářem.
Input (shape, sparse=false, dynamicAxis=DefaultAxis, tag='feature')
Parametry
shape: skalární (pokud je vstup vektor) nebo tenzorový obrazec (pokud je vstup multidimenzionální).40Například pro 40rozměrné prvky nebo(640:480:3)pro barevné obrázky velikosti VGA.sparse(výchozí hodnota: false): Pokud je hodnota true, vstup se uloží jako řídká matice.dynamicAxis(výchozí: Žádný): alternativní dynamická osa, kterou má tento vstup použít
Vrácená hodnota
Proměnná, která přijímá svou hodnotu z datového reader proudu se stejným názvem.
###Description
Input{} deklaruje proměnnou, která představuje vstup přečtený ze čtečky.
Vstupy musí být deklarovány na vnější úrovni oddílu BrainScriptNetworkBuilderreader a oddíl musí definovat stream se stejným názvem.
####Sparse vstupních dat
Možnost sparse=true deklaruje, že vstupní data musí být reprezentována jako řídký vektor.
To se běžně používá ke čtení dat kategorií (například slov) reprezentovaných vektory s jedním horkým vektorem.
Řídké vstupy mají dvě běžná použití:
- vstupy, které jsou vloženy; A
- Popisky.
Vkládání je kolekce hustých vektorů s souvislou hodnotou indexovaných číselným ID slova (nebo jiné položky kategorie).
V CNTK je tato operace indexu vyjádřena jako násobení matice s jednou horkou reprezentací slova.
Například druhé slovo ve slovníku by bylo reprezentováno vektorem w = (0, 1, 0, 0, ..., 0)^Tsloupce a maticový součin E * w je ekvivalentem načtení druhého sloupce matice E, kde sloupce E jsou vložené vektory.
Formálně se tento maticový součin násobí velkým množstvím nul, ale pokud w je reprezentován v řídkém formátu, tato operace skutečně představuje operaci indexování, takže je to levné.
Všimněte si, že vstupní data pořadí>1 nelze reprezentovat v řídkém formátu.
Řídké popisky
Podobně jako řídké vstupy mohou být i popisky slov nebo jiných kategorií reprezentovány řídkou formou.
Všimněte si však, že řídké popisky nejsou v současné době podporovány přímou formou CrossEntropyWithSoftmax().
Místo toho se musí použít ručně psaný formulář, jak je uvedeno tady.
Všimněte si, že data popisků pořadí>1 nelze reprezentovat v řídkém formátu.
Vstupy obrázků
Obrázky se čtou jako tenzory 3. pořadí s rozměry tenzoru [W x H x C] s šířkou W, výškou Ha počtem barevných kanálů C (3 pro RGB nebo 1 pro B&W).
Sekvence s proměnlivou délkou
Vstupy můžou být buď jednotlivé vzorky (např. obrázky), nebo sekvence ukázek (např. věty). Pro CNTK jsou stejné (jednotlivé vzorky jsou sekvencí délky 1). Záleží na konkrétních vstupních datech a čtenáři, jestli vstup přijímá jednotlivé vzorky nebo sekvence.
Příklady
Vektory 40rozměrných funkcí řeči
features = Input{40}
Čtení celého okna včetně 10 levých a 10 pravých sousedů:
features = Input{(40:21)}
Word sekvence, velikost slovníku 33124
words = Input{33124, sparse=true}
s odpovídající definicí čtečky (pro čtení ze souboru CTF):
reader = {
readerType = "CNTKTextFormatReader"
file = "my_text_corpus.ctf"
randomize = true
input = { words = { alias = "w" ; dim = 33124 ; format = "sparse" }}
}
CIFAR-10 Obrázků
images = Input{(32:32:3)}
labels = Input{10}
s odpovídající definicí čtečky:
reader = {
verbosity = 0 ; randomize = true
deserializers = ({
type = "ImageDeserializer" ; module = "ImageReader"
file = "$dataDir$/cifar-10-batches-py/train_map.txt"
input = {
images = { transforms = (
{ type = "Crop" ; cropType = "RandomSide" ; sideRatio = 0.8 ; jitterType = "UniRatio" } :
{ type = "Scale" ; width = 32 ; height = 32 ; channels = 3 ; interpolations = "linear" } :
{ type = "Transpose" }
)}
labels = { labelDim = 10 }
}
})
}