Partilhar via


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 exemplo 40 , 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 dispersa
  • dynamicAxis (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)^Tde 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 He 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 }
        }
    })
}