In molte librerie di reti neurali, ci sono "livelli di incorporamento", come in Keras o Lasagne .
Non sono sicuro di averne compreso la funzione, nonostante abbia letto la documentazione. Ad esempio, nella documentazione di Keras si dice:
Trasforma interi positivi (indici) in vettori di densi di dimensioni fisse, ad es. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
Potrebbe una persona esperta spiegare cosa fa e quando lo useresti?
EDIT: per quanto riguarda l'incollaggio nella documentazione, non c'è molto da incollare dalla documentazione, quindi la mia domanda. Non capisco la trasformazione che fa, né perché debba essere usata.
Ad ogni modo, è così che viene spiegato in Keras:
Incorporare
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'uniform', input_length = None, weights = None, W_regularizer = None, W_constraint = None, mask_zero = False) Trasforma interi positivi (indici) in vettori di dimensioni fisse , per esempio. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
Forma di input: tensore 2D con forma: (nb_samples, sequenza_length). Forma di output: tensore 3D con forma: (nb_samples, sequenza_length, output_dim). Argomenti:
input_dim: int> = 0. Dimensione del vocabolario, cioè. 1 + indice intero massimo presente nei dati di input. output_dim: int> = 0. Dimensione dell'incorporamento denso
Ed ecco come è spiegato in Lasagne:
Un livello per gli incantesimi di parole. L'input deve essere una variabile Tensor di tipo intero.
Parametri: incoming: un'istanza Layer o una tupla
Il livello si inserisce in questo livello o la forma di input prevista.
input_size: int
Il numero di diversi incastonature. L'ultimo incorporamento avrà indice input_size - 1.
output_size: int
La dimensione di ogni incorporamento.
W: Variabile condivisa Theano, espressione, matrice numpy o richiamabile
Valore iniziale, espressione o inizializzatore per la matrice di incorporamento. Dovrebbe essere una matrice con forma (input_size, output_size). Vedi lasagne.utils.create_param () per maggiori informazioni.
Esempi
>>> 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)