Skip to content

Instantly share code, notes, and snippets.

@Jirayut558
Created December 28, 2018 18:06
Show Gist options
  • Save Jirayut558/e4a7c833a394f1b8f95e28c38165230a to your computer and use it in GitHub Desktop.
Save Jirayut558/e4a7c833a394f1b8f95e28c38165230a to your computer and use it in GitHub Desktop.
def embedding_model():
# define word embedding
vocab_list = [(k, wv_model.wv[k]) for k, v in wv_model.wv.vocab.items()]
embeddings_matrix = np.zeros((len(wv_model.wv.vocab.items()) + 1, wv_model.vector_size))
for i in range(len(vocab_list)):
word = vocab_list[i][0]
embeddings_matrix[i + 1] = vocab_list[i][1]
embedding_layer = Embedding(input_dim=len(embeddings_matrix),
output_dim=EMBEDDING_DIM,
weights=[embeddings_matrix],
trainable=False,name="Embedding")
return embedding_layer,len(embeddings_matrix)
def ende_embedding_model(n_input, n_output, n_units):
encoder_inputs = Input(shape=(None,), name="Encoder_input")
encoder = LSTM(n_units,return_state=True, name='Encoder_lstm')
Shared_Embedding,vocab_size = embedding_model()
word_embedding_context = Shared_Embedding(encoder_inputs)
encoder_outputs, state_h, state_c = encoder(word_embedding_context)
encoder_states = [state_h, state_c]
decoder_inputs = Input(shape=(None,), name="Decoder_input")
decoder_lstm = LSTM(n_units, return_sequences=True, return_state=True, name="Decoder_lstm")
word_embedding_answer = Shared_Embedding(decoder_inputs)
decoder_outputs, _, _ = decoder_lstm(word_embedding_answer, initial_state=encoder_states)
decoder_dense = TimeDistributed(Dense(vocab_size, activation='softmax', name="Dense_layer"))
decoder_outputs = decoder_dense(decoder_outputs)
model = Model([encoder_inputs, decoder_inputs], decoder_outputs)
encoder_model = Model(encoder_inputs, encoder_states)
decoder_state_input_h = Input(shape=(n_units,), name="H_state_input")
decoder_state_input_c = Input(shape=(n_units,), name="C_state_input")
decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]
decoder_outputs, state_h, state_c = decoder_lstm(word_embedding_answer, initial_state=decoder_states_inputs)
decoder_states = [state_h, state_c]
decoder_outputs = decoder_dense(decoder_outputs)
decoder_model = Model([decoder_inputs] + decoder_states_inputs, [decoder_outputs] + decoder_states)
return model, encoder_model, decoder_model
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment