W wielu bibliotekach sieci neuronowych istnieją „warstwy osadzania”, jak w Keras lub Lasagne .
Nie jestem pewien, czy rozumiem jego funkcję, pomimo przeczytania dokumentacji. Na przykład w dokumentacji Keras napisano:
Zamień dodatnie liczby całkowite (indeksy) na wektory den o stałym rozmiarze, np. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Czy osoba kompetentna może wyjaśnić, co robi i kiedy z niej skorzystasz?
EDYCJA: Jeśli chodzi o wklejanie w dokumentacji, nie ma wiele do wklejenia z dokumentacji, stąd moje pytanie. Nie rozumiem transformacji, której dokonuje, ani dlaczego należy jej używać.
W każdym razie tak to wyjaśniono w Keras:
Osadzanie
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'uniform', input_length = None, weight = None, W_regularizer = None, W_constraint = None, mask_zero = False) Zamień liczby całkowite (indeksy) na wektory o stałym rozmiarze np. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Kształt wejściowy: tensor 2D o kształcie: (nb_samples, sekwencja_długość). Kształt wyjściowy: tensor 3D o kształcie: (nb_samples, sekwencja_długość, wyjście_dim). Argumenty:
input_dim: int> = 0. Rozmiar słownictwa, tj. 1 + maksymalny wskaźnik liczb całkowitych występujących w danych wejściowych. output_dim: int> = 0. Wymiar gęstego osadzania
A oto jak to wyjaśniono w Lasagne:
Warstwa do osadzania słów. Dane wejściowe powinny być zmiennymi Tensor typu liczb całkowitych.
Parametry: przychodzące: instancja warstwy lub krotka
Warstwa podawana do tej warstwy lub oczekiwany kształt wejściowy.
input_size: int
Liczba różnych osadzeń. Ostatnie osadzenie będzie miało indeks rozmiar_wejściowy - 1.
rozmiar_wyjściowy: int
Rozmiar każdego osadzenia.
W: Theano wspólna zmienna, wyrażenie, tablica numpy lub możliwość wywołania
Wartość początkowa, wyrażenie lub inicjator macierzy osadzania. Powinna to być macierz o kształcie (rozmiar_wejściowy, rozmiar_wyjściowy). Aby uzyskać więcej informacji, zobacz lasagne.utils.create_param ().
Przykłady
>>> 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)