Delen via


Invoer{}

Hiermee definieert u een invoer die wordt ingevoerd door een lezer.

Input (shape, sparse=false, dynamicAxis=DefaultAxis, tag='feature')

Parameters

  • shape: scalair (als de invoer een vector is) of tensorshape (als de invoer multidimensionaal is). 40 Bijvoorbeeld voor 40-dimensionale functies of (640:480:3) voor kleurenafbeeldingen van VGA-formaat.
  • sparse (standaard: onwaar): indien waar, wordt invoer opgeslagen als sparse matrix
  • dynamicAxis (standaard: Geen): alternatieve dynamische as die door deze invoer moet worden gebruikt

Retourwaarde

Een variabele die de waarde ontvangt van een reader stroom met dezelfde naam.

###Description

Input{} declareert een variabele die staat voor het lezen van invoer van een lezer. Invoer moet worden gedeclareerd op het buitenste niveau van de BrainScriptNetworkBuilder sectie en de reader sectie moet een stroom met dezelfde naam definiëren.

####Sparse invoergegevens

De sparse=true optie geeft aan dat de invoergegevens moeten worden weergegeven als een sparse vector. Dit wordt vaak gebruikt voor het lezen van categorische gegevens (zoals woorden) die worden vertegenwoordigd door one-hot vectoren. Sparse-invoer heeft twee algemene toepassingen:

  • invoer die wordt ingesloten; En
  • labels.

Een insluiting is een verzameling compacte doorlopende vectoren die worden geïndexeerd door de numerieke id van een woord (of ander categorisch item). In CNTK wordt deze indexbewerking uitgedrukt als een matrixvermenigvuldiging met een one-hot weergave van het woord. Het tweede woord in de woordenlijst wordt bijvoorbeeld vertegenwoordigd door een kolomvector w = (0, 1, 0, 0, ..., 0)^Ten het matrixproduct E * w is gelijk aan het ophalen van de tweede kolom van een matrix E, waarbij de kolommen van E de insluitvectors zijn.

Formeel wordt dit matrixproduct vermenigvuldigd met veel nullen, maar als w deze in een sparse-indeling wordt weergegeven, is deze bewerking inderdaad slechts een indexeringsbewerking, dus dit is goedkoop.

Invoergegevens van rang>1 kunnen niet worden weergegeven in sparse-indeling.

Sparse labels

Net als sparse-invoer kunnen woorden of andere categorische labels in sparse vorm worden weergegeven.

Houd er echter rekening mee dat sparse-labels momenteel niet worden ondersteund door de directe vorm van de CrossEntropyWithSoftmax(). In plaats daarvan moet een handmatig geschreven formulier worden gebruikt, zoals hier wordt aangegeven

Houd er rekening mee dat labels voor gegevens van rang>1 niet kunnen worden weergegeven in een sparse-indeling.

Invoer van installatiekopieën

Afbeeldingen worden gelezen als rank-3 tensors van tensor-afmetingen [W x H x C] met breedte W, hoogte Hen aantal kleurkanalen C (3 voor RGB of 1 voor B&W).

Reeksen met variabele lengte

Invoer kan bestaan uit afzonderlijke steekproeven (bijvoorbeeld afbeeldingen) of reeksen steekproeven (bijvoorbeeld zinnen). Voor CNTK zijn deze hetzelfde (een afzonderlijke steekproef is een reeks van lengte 1). Het is aan de specifieke invoergegevens en de lezer of een invoer afzonderlijke voorbeelden of reeksen ontvangt.

Voorbeelden

40-dimensionale vectoren voor spraakfuncties

features = Input{40}

Als u een heel venster wilt lezen, inclusief 10 frames links en 10 rechter-aangrenzende frames:

features = Input{(40:21)}

Word reeksen, woordenlijstgrootte 33124

words = Input{33124, sparse=true}

met de bijbehorende lezerdefinitie (om deze te lezen uit een CTF-bestand):

reader = {
    readerType = "CNTKTextFormatReader"
    file = "my_text_corpus.ctf"
    randomize = true
    input = { words = { alias = "w" ; dim = 33124 ;  format = "sparse" }}
}

CIFAR-10-afbeeldingen

images = Input{(32:32:3)}
labels = Input{10}

met de bijbehorende lezerdefinitie:

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 }
        }
    })
}