Entrada{}
Define uma entrada fornecida por um leitor.
Input (shape, sparse=false, dynamicAxis=DefaultAxis, tag='feature')
Parâmetros
shape
: escalar (se a entrada for um vetor) ou forma de tensor (se a entrada for multidimensional). Por exemplo40
, para funcionalidades de 40 dimensões ou(640:480:3)
para imagens a cores do tamanho de VGA.sparse
(predefinição: falso): se verdadeiro, a entrada é armazenada como matriz dispersadynamicAxis
(predefinição: Nenhum): eixo dinâmico alternativo a ser utilizado por esta entrada
Valor devolvido
Uma variável que recebe o respetivo valor a partir de um reader
fluxo com o mesmo nome.
###Description
Input{}
declara uma variável que representa a entrada lida de um leitor.
As entradas têm de ser declaradas no nível mais exterior da BrainScriptNetworkBuilder
secção e a reader
secção tem de definir um fluxo com o mesmo nome.
####Sparse dados de entrada
A sparse=true
opção declara que os dados de entrada devem ser representados como um vetor disperso.
Isto é normalmente utilizado para ler dados categóricos (como palavras) representados por vetores one-hot.
As entradas dispersas têm duas utilizações comuns:
- entradas que são incorporadas; e
- etiquetas.
Uma incorporação é uma coleção de vetores densos de valor contínuo indexados pelo ID numérico de uma palavra (ou outro item categórico).
No CNTK, esta operação de índice é expressa como uma multiplicação de matriz com uma representação única da palavra.
Por exemplo, a segunda palavra no dicionário seria representada por um vetor w = (0, 1, 0, 0, ..., 0)^T
de coluna e o produto E * w
de matriz é equivalente a obter a segunda coluna de uma matriz E
, em que as colunas de E
são os vetores de incorporação.
Formalmente, este produto de matriz multiplica-se com muitos zeros, mas se w
estiver representado em formato disperso, esta operação equivale apenas a uma operação de indexação, pelo que é barata.
Tenha em atenção que os dados de entrada da classificação>1 não podem ser representados em formato disperso.
Etiquetas dispersas
Tal como as entradas dispersas, as palavras ou outras etiquetas categóricas podem ser representadas de forma dispersa.
Tenha em atenção, no entanto, que as etiquetas dispersas não são atualmente suportadas pela forma direta do CrossEntropyWithSoftmax()
.
Em vez disso, tem de ser utilizado um formulário escrito manualmente, conforme indicado aqui
Tenha em atenção que os dados de etiquetas da classificação>1 não podem ser representados em formato disperso.
Entradas de imagens
As imagens são lidas como tensores de classificação 3 de dimensões [W x H x C]
de tensor com largura W
, altura H
e número de canais C
de cores (3 para RGB ou 1 para B&W).
Sequências de comprimento variável
As entradas podem ser amostras individuais (por exemplo, imagens) ou sequências de amostras (por exemplo, frases). Para CNTK, estas são as mesmas (uma amostra individual é uma sequência de comprimento 1). Cabe aos dados de entrada e leitor específicos se uma entrada recebe exemplos ou sequências individuais.
Exemplos
Vetores de funcionalidades de voz 40 dimensões
features = Input{40}
Para ler uma janela inteira, incluindo 10 fotogramas de vizinhos à esquerda e 10 à direita:
features = Input{(40:21)}
sequências de Word, tamanho do vocabulário 33124
words = Input{33124, sparse=true}
com a definição de leitor correspondente (para lê-las a partir de um ficheiro CTF):
reader = {
readerType = "CNTKTextFormatReader"
file = "my_text_corpus.ctf"
randomize = true
input = { words = { alias = "w" ; dim = 33124 ; format = "sparse" }}
}
Imagens CIFAR-10
images = Input{(32:32:3)}
labels = Input{10}
com a definição de leitor correspondente:
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 }
}
})
}