Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Definiuje dane wejściowe, które są przekazywane przez czytnik.
Input (shape, sparse=false, dynamicAxis=DefaultAxis, tag='feature')
Parametry
shape: skalarny (jeśli dane wejściowe są wektorem) lub kształt tensorowy (jeśli dane wejściowe są wielowymiarowe). Na przykład40w przypadku 40-wymiarowych cech lub(640:480:3)obrazów kolorów o rozmiarze NVIDIA.sparse(wartość domyślna: false): jeśli wartość true, dane wejściowe są przechowywane jako macierz rozrzedliwadynamicAxis(ustawienie domyślne: Brak): alternatywna oś dynamiczna do użycia przez te dane wejściowe
Wartość zwracana
Zmienna, która odbiera jej wartość ze reader strumienia o tej samej nazwie.
###Description
Input{} deklaruje zmienną reprezentującą dane wejściowe odczytane z czytnika.
Dane wejściowe muszą być zadeklarowane na najbardziej zewnętrznym poziomie BrainScriptNetworkBuilder sekcji, a reader sekcja musi definiować strumień o tej samej nazwie.
####Sparse dane wejściowe
Opcja sparse=true deklaruje, że dane wejściowe są reprezentowane jako wektor rozrzedny.
Jest to często używane do odczytywania danych kategorii (takich jak wyrazy) reprezentowanych przez wektory jednorazowe.
Rozrzedne dane wejściowe mają dwa typowe zastosowania:
- dane wejściowe, które są osadzone; I
- Etykiety.
Osadzanie jest kolekcją gęstych wektorów o stałej wartości indeksowanych według identyfikatora liczbowego wyrazu (lub innego elementu podzielonego na kategorie).
W CNTK ta operacja indeksu jest wyrażana jako mnożenie macierzy z jednogwiatkową reprezentacją wyrazu.
Na przykład drugie słowo w słowniku będzie reprezentowane przez wektor w = (0, 1, 0, 0, ..., 0)^Tkolumny , a produkt E * w macierzy jest odpowiednikiem pobierania drugiej kolumny macierzy E, gdzie kolumny E są wektorami osadzania.
Formalnie ten produkt macierzy mnoży się z dużą liczbie zer, ale jeśli w jest reprezentowany w formacie rozrzedżonym, ta operacja rzeczywiście tylko wynosi operację indeksowania, więc jest to tanie.
Należy pamiętać, że dane wejściowe rangi>1 nie mogą być reprezentowane w formacie rozrzedłym.
Etykiety rozrzedne
Podobnie jak w przypadku rzadkich danych wejściowych, wyrazy lub inne etykiety podzielone na kategorie mogą być reprezentowane w postaci rozrzedowej.
Należy jednak pamiętać, że rozrzedne etykiety nie są obecnie obsługiwane przez bezpośrednią formę .CrossEntropyWithSoftmax()
Zamiast tego należy użyć ręcznie napisanego formularza, jak podano tutaj
Należy pamiętać, że dane etykiet rangi>1 nie mogą być reprezentowane w formacie rozrzedzgę.
Dane wejściowe obrazu
Obrazy są odczytywane jako szereg 3 tensor wymiarów [W x H x C] tensor o szerokości W, wysokości Hi liczbie kanałów C kolorów (3 dla RGB lub 1 dla B&W).
Sekwencje o zmiennej długości
Dane wejściowe mogą być pojedynczymi próbkami (np. obrazami) lub sekwencjami próbek (np. zdaniami). W przypadku cnTK są one takie same (pojedyncza próbka jest sekwencją długości 1). Zależy to od konkretnych danych wejściowych i czytelnika, czy dane wejściowe odbierają poszczególne próbki lub sekwencje.
Przykłady
40-wymiarowe wektory funkcji mowy
features = Input{40}
Aby odczytać całe okno, w tym 10 z lewej i 10 ramek sąsiada po prawej stronie:
features = Input{(40:21)}
Word sekwencje, rozmiar słownictwa 33124
words = Input{33124, sparse=true}
z odpowiednią definicją czytnika (aby odczytać je z pliku CTF):
reader = {
readerType = "CNTKTextFormatReader"
file = "my_text_corpus.ctf"
randomize = true
input = { words = { alias = "w" ; dim = 33124 ; format = "sparse" }}
}
Obrazy CIFAR-10
images = Input{(32:32:3)}
labels = Input{10}
z odpowiednią definicją czytnika:
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 }
}
})
}