En muchas bibliotecas de redes neuronales, hay 'capas de incrustación', como en Keras o Lasagne .
No estoy seguro de entender su función, a pesar de leer la documentación. Por ejemplo, en la documentación de Keras dice:
Convierta enteros positivos (índices) en vectores densos de tamaño fijo, por ejemplo. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
¿Podría una persona con conocimientos explicar qué hace y cuándo lo usaría?
EDITAR: En cuanto a pegar en la documentación, no hay mucho que pegar de la documentación, de ahí mi pregunta. No entiendo la transformación que hace, ni por qué debería usarse.
De todos modos, así es como se explica en Keras:
Incrustación
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'uniform', input_length = None, weights = None, W_regularizer = None, W_constraint = None, mask_zero = False) Convierta enteros positivos (índices) en vectores densos de tamaño fijo , p.ej. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
Forma de entrada: tensor 2D con forma: (nb_samples, secuencia_length). Forma de salida: tensor 3D con forma: (nb_samples, secuencia_length, output_dim). Argumentos:
input_dim: int> = 0. Tamaño del vocabulario, es decir. 1 + índice entero máximo que ocurre en los datos de entrada. output_dim: int> = 0. Dimensión de la incrustación densa
Y así es como se explica en Lasagne:
Una capa para incrustaciones de palabras. La entrada debe ser una variable Tensor de tipo entero.
Parámetros: entrantes: una instancia de capa o una tupla
La capa que se alimenta a esta capa, o la forma de entrada esperada.
input_size: int
El número de diferentes incrustaciones. La última incrustación tendrá el índice input_size - 1.
output_size: int
El tamaño de cada incrustación.
W: variable compartida Theano, expresión, matriz numpy o invocable
Valor inicial, expresión o inicializador para la matriz de incrustación. Esto debería ser una matriz con forma (input_size, output_size). Consulte lasagne.utils.create_param () para obtener más información.
Ejemplos
>>> 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)