Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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).40Bijvoorbeeld voor 40-dimensionale functies of(640:480:3)voor kleurenafbeeldingen van VGA-formaat.sparse(standaard: onwaar): indien waar, wordt invoer opgeslagen als sparse matrixdynamicAxis(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 }
}
})
}