Trong nhiều thư viện mạng thần kinh, có 'các lớp nhúng', như trong Keras hoặc Lasagne .
Tôi không chắc chắn tôi hiểu chức năng của nó, mặc dù đọc tài liệu. Ví dụ, trong tài liệu Keras có ghi:
Biến các số nguyên dương (chỉ mục) thành các vectơ mật độ có kích thước cố định, ví dụ. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Một người có kiến thức có thể giải thích những gì nó làm, và khi nào bạn sẽ sử dụng nó?
EDIT: Liên quan đến dán trong tài liệu, không có nhiều để dán từ tài liệu, do đó câu hỏi của tôi. Tôi không hiểu sự biến đổi của nó, cũng như tại sao nó nên được sử dụng.
Dù sao, đây là cách nó được giải thích trong Keras:
Nhúng
keras.layers.embeddings.Embpping (input_dim, output_dim, init = 'thống nhất', input_length = Không, weights = Không, W_THERizer = Không, W_constraint = Không, mask_zero = Sai) Biến các số nguyên dương (chỉ mục) , ví dụ. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Hình dạng đầu vào: 2D tenor có hình dạng: (nb_samples, Sequ_length). Hình dạng đầu ra: Tenor 3D có hình dạng: (nb_samples, Sequ_length, output_dim). Tranh luận:
input_dim: int> = 0. Kích thước của từ vựng, nghĩa là. 1 + chỉ số nguyên tối đa xảy ra trong dữ liệu đầu vào. output_dim: int> = 0. Kích thước của nhúng dày đặc
Và đây là cách nó được giải thích ở Lasagne:
Một lớp cho các từ nhúng. Đầu vào phải là một biến số kiểu số nguyên.
Tham số: đến: một thể hiện lớp hoặc một tuple
Lớp cho ăn vào lớp này, hoặc hình dạng đầu vào dự kiến.
input_size: int
Số lượng nhúng khác nhau. Lần nhúng cuối cùng sẽ có chỉ số input_size - 1.
đầu ra_size: int
Kích thước của mỗi lần nhúng.
W: Theano chia sẻ biến, biểu thức, mảng numpy hoặc có thể gọi được
Giá trị ban đầu, biểu thức hoặc bộ khởi tạo cho ma trận nhúng. Đây phải là một ma trận có hình dạng (input_size, output_size). Xem lasagne.utils.create_param () để biết thêm thông tin.
Ví dụ
>>> 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)