많은 신경망 라이브러리에는 Keras 또는 Lasagne 와 같은 '임베딩 레이어'가 있습니다.
설명서를 읽었음에도 그 기능을 이해하고 있는지 잘 모르겠습니다. 예를 들어, Keras 문서에서 다음과 같이 말합니다.
양의 정수 (인덱스)를 고정 크기의 밀도 벡터로 변환합니다 (예 : [[4], [20]]-> [[0.25, 0.1], [0.6, -0.2]]
지식이 풍부한 사람이 자신이하는 일과 사용시기를 설명 할 수 있습니까?
편집 : 문서의 붙여 넣기와 관련하여 문서에서 붙여 넣을 것이 많지 않으므로 내 질문입니다. 변형이 무엇인지, 왜 사용해야 하는지를 이해하지 못합니다.
어쨌든, 이것은 Keras에서 설명하는 방법입니다.
임베딩
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'uniform', input_length = None, weights = None, W_regularizer = None, W_constraint = None, mask_zero = False) 양의 정수 (인덱스)를 고정 된 크기의 밀도 벡터로 바꿉니다. 예를 들어. [[4], [20]]-> [[0.25, 0.1], [0.6, -0.2]]
입력 모양 : 모양이있는 2D 텐서 : (nb_samples, sequence_length). 출력 모양 : 모양이있는 3D 텐서 : (nb_samples, sequence_length, output_dim). 인수 :
input_dim : int> = 0. 어휘의 크기, 즉 입력 데이터에서 발생하는 1+ 최대 정수 인덱스. output_dim : int> = 0. 조밀 한 임베딩의 차원
다음은 Lasagne에서 설명하는 방법입니다.
단어 포함을위한 레이어입니다. 입력은 정수 유형 텐서 변수 여야합니다.
매개 변수 : 수신 : 레이어 인스턴스 또는 튜플
이 레이어로 공급되는 레이어 또는 예상 입력 모양.
입력 _ 크기 : int
다른 임베딩 수 마지막 임베딩에는 인덱스 input_size-1이 있습니다.
output_size : int
각 포함의 크기입니다.
W : Theano 공유 변수, 표현식, numpy 배열 또는 호출 가능
임베딩 매트릭스의 초기 값, 표현식 또는 이니셜 라이저. 모양이있는 행렬 (input_size, output_size)이어야합니다. 자세한 내용은 lasagne.utils.create_param ()을 참조하십시오.
예
>>> 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)