Di banyak perpustakaan jaringan saraf, ada 'lapisan embedding', seperti di Keras atau Lasagne .
Saya tidak yakin saya mengerti fungsinya, meskipun membaca dokumentasi. Misalnya, dalam dokumentasi Keras tertulis:
Ubah bilangan bulat positif (indeks) menjadi vektor padat ukuran tetap, misalnya. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Bisakah orang yang berpengetahuan luas menjelaskan apa fungsinya, dan kapan Anda akan menggunakannya?
EDIT: Mengenai menempelkan di dokumentasi, tidak ada banyak untuk menyisipkan dari dokumentasi, maka pertanyaan saya. Saya tidak mengerti transformasi yang dilakukannya, atau mengapa harus digunakan.
Bagaimanapun, ini adalah bagaimana hal itu dijelaskan dalam Keras:
Menanamkan
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'seragam', input_length = Tidak ada, bobot = Tidak ada, W_regularizer = Tidak Ada, W_regstraint = Tidak Ada, mask_zero = Salah) Ubah bilangan bulat positif (indeks) menjadi vektor padat dengan ukuran tetap misalnya. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Bentuk input: tensor 2D dengan bentuk: (nb_samples, sequence_length). Bentuk keluaran: tensor 3D dengan bentuk: (nb_samples, sequence_length, output_dim). Argumen:
input_dim: int> = 0. Ukuran kosakata, yaitu. 1 + indeks integer maksimum yang terjadi pada data input. output_dim: int> = 0. Dimensi embedding padat
Dan inilah bagaimana hal itu dijelaskan dalam Lasagne:
Lapisan untuk embeddings kata. Input harus berupa variabel Tensor tipe integer.
Parameter: masuk: turunan Layer atau tupel
Lapisan memberi makan ke lapisan ini, atau bentuk input yang diharapkan.
input_size: int
Jumlah pernikahan yang berbeda. Embedding terakhir akan memiliki indeks input_size - 1.
output_size: int
Ukuran masing-masing embedding.
W: Theano membagikan variabel, ekspresi, array numpy, atau callable
Nilai awal, ekspresi, atau initializer untuk embedding matrix. Ini harus berupa matriks dengan bentuk (input_size, output_size). Lihat lasagne.utils.create_param () untuk informasi lebih lanjut.
Contohnya
>>> 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)