Как использовать слой Keras Embedding, если имеется более 1 текстовых объектов

Я понимаю, как использовать слой Keras Embedded в случае, если есть отдельная текстовая функция, как в классификации обзора IMDB. Тем не менее, я не совсем понимаю, как использовать слои для встраивания, когда у меня есть проблема с классификацией, когда существует более одной текстовой функции. Например, у меня есть набор данных с двумя текстовыми функциями Диагностический текст и Запрошенная процедура, и метка является двоичным классом (1 для утвержденного, 0 для не утвержденного). В приведенном ниже примере x_train имеет 2 столбца Диагностика и Процедура, в отличие от набора данных IMDB. Нужно ли создавать 2 слоя для встраивания, один для диагностики и процедуры? Если так, какие изменения кода потребуются?

x_train = preprocessing.sequences.pad_sequences(x_train, maxlen=20)
x_test = preprocessing.sequences.pad_sequences(x_test, maxlen=20)
model = Sequential()
model.add(Embedding(10000,8,input_length=20)
model.add(Flatten())
model.add(Dense(1, activation='sigmoid')
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

1 ответ

Решение

У вас есть несколько вариантов, вы можете объединить эти две функции в одну и создать одно вложение для них обоих. Вот логика

all_features = np.hstack(X['diag'] + X['proc'])
X = pad_sequence(all_features, max_len)
# build model as usual, as you can see on a single embedding layer is
# needed.

или вы можете использовать функциональный API и построить модель с несколькими входами

diag_inp = Input()
diag_emb = Embedding(512)(diag_input)
proc_inp = Input()
proc_emb = Embedding(512)(proc_input)

# concatenate them to makes a single vector per sample
merged = Concatenate()[diag_emb, proc_emb]
out = Dense(2,  activation='sigmoid')
model = Model(inputs=[diag_inp, proc_inp], outputs=[out])

То есть вы можете изучить вложение для объединения или вы можете изучить несколько вложений и объединить их во время обучения.

Другие вопросы по тегам