Índice de camada Embedding com estofamento zero no Keras

votos
3

Estou construindo um modelo RNN em Keras para frases com embeddings palavra de gensim. Estou inicializar a camada de incorporação com vetores luva. Uma vez que este é um modelo seqüencial e frases têm comprimentos variáveis, vetores são com zeros à esquerda. por exemplo

[0, 0, 0, 6, 2, 4]

Digamos que os vetores luva têm dimensões [NUM_VOCAB, EMBEDDING_SIZE]. O índice zero é mascarado (ignorado) de modo a obter a indexação adequada de palavras, podemos adicionar uma coluna extra à matriz luva de modo que as dimensões são: [NUM_VOCAB+1, EMBEDDING_SIZE]?

Parece que há um vector desnecessário que o modelo irá estimar a menos que haja uma maneira mais elegante.

glove = Word2Vec.load_word2vec_format(filename)
embedding_matrix = np.vstack([np.zeros(EMBEDDING_SIZE), glove.syn0])

model = Sequential()

# -- this uses Glove as inits
model.add(Embedding(NUM_VOCAB, EMBEDDING_SIZE, input_length=maxlen, mask_zero=True,
                           weights=[embedding_matrix]))

# -- sequence layer
model.add(LSTM(32, return_sequences=False, init='orthogonal'))
model.add(Activation('tanh'))

...

obrigado

Publicado 08/02/2016 em 16:43
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more