Em muitas bibliotecas de redes neurais, existem 'camadas de incorporação', como em Keras ou Lasagne .
Não sei se entendi sua função, apesar de ler a documentação. Por exemplo, na documentação do Keras, ele diz:
Transforme números inteiros positivos (índices) em vetores densos de tamanho fixo, por exemplo. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Uma pessoa experiente poderia explicar o que faz e quando você o usaria?
Edição: Quanto à colagem na documentação, não há muito para colar a partir da documentação, daí a minha pergunta. Não entendo a transformação que ela faz, nem por que deveria ser usada.
De qualquer forma, é assim que é explicado em Keras:
Incorporação
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'uniforme', input_length = None, pesos = None, W_regularizer = None, W_constraint = None, mask_zero = False) Transforme inteiros positivos (índices) em densos vetores de tamanho fixo , por exemplo. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Formato de entrada: tensor 2D com formato: (nb_samples, sequence_length). Forma de saída: tensor 3D com forma: (nb_samples, sequence_length, output_dim). Argumentos:
input_dim: int> = 0. Tamanho do vocabulário, ie. 1 + índice inteiro máximo ocorrendo nos dados de entrada. output_dim: int> = 0. Dimensão da incorporação densa
E aqui está como é explicado em Lasanha:
Uma camada para incorporação de palavras. A entrada deve ser uma variável do tipo inteiro Tensor.
Parâmetros: entrante: uma instância de camada ou uma tupla
A camada que está sendo alimentada nessa camada ou a forma de entrada esperada.
input_size: int
O número de diferentes incorporações. A última incorporação terá o índice input_size - 1.
output_size: int
O tamanho de cada incorporação.
W: Theano compartilhou variável, expressão, matriz numpy ou chamada
Valor inicial, expressão ou inicializador para a matriz de incorporação. Deve ser uma matriz com forma (tamanho_de_ entrada, tamanho_de_saída). Veja lasagne.utils.create_param () para mais informações.
Exemplos
>>> from lasagne.layers import EmbeddingLayer, InputLayer, get_output >>> import theano >>> x = T.imatrix() >>> l_in = InputLayer((3, )) >>> W = np.arange(3*5).reshape((3, 5)).astype('float32') >>> l1 = EmbeddingLayer(l_in, input_size=3, output_size=5, W=W) >>> output = get_output(l1, x) >>> f = theano.function([x], output) >>> x_test = np.array([[0, 2], [1, 2]]).astype('int32') >>> f(x_test) array([[[ 0., 1., 2., 3., 4.], [ 10., 11., 12., 13., 14.]], [[ 5., 6., 7., 8., 9.], [ 10., 11., 12., 13., 14.]]], dtype=float32)