Sdílet prostřednictvím


Vstup{}

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í). 40 Napří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 }
        }
    })
}