Это модель с пропуском грамма
# Build skip-gram architecture
word_model = Sequential()
word_model.add(Embedding(vocab_size, embed_size, embeddings_initializer="glorot_uniform", input_length=1))
word_model.add(Reshape((embed_size, )))
context_model = Sequential()
context_model.add(Embedding(vocab_size, embed_size, embeddings_initializer="glorot_uniform", input_length=1))
context_model.add(Reshape((embed_size,)))
model1 = Sequential()
model1.add(Merge([word_model, context_model], mode="dot"))
model1.add(Dense(1, kernel_initializer="glorot_uniform", activation="sigmoid"))
model1.compile(loss="mean_squared_error", optimizer="rmsprop")
# view model summary
print(model1.summary())
Это обученная модель
# Train model
for epoch in range(1, 151):
loss = 0
for i, elem in enumerate(skip_grams):
pair_first_elem = np.array(list(zip(*elem[0]))[0], dtype='int32')
pair_second_elem = np.array(list(zip(*elem[0]))[1], dtype='int32')
labels = np.array(elem[1], dtype='int32')
test.X = [pair_first_elem, pair_second_elem]
test.Y = labels
#if i % 10000 == 0:
#print('Processed {} (skip_first, skip_second, relevance) pairs'.format(i))
loss += model1.train_on_batch(test.X,test.Y)
print('Epoch:', epoch, 'Loss:', loss)
Это оценка модели с пропуском грамма. Не могли бы вы помочь мне построить эту серию?