Несколько встраиваемых слоев в керас
В случае предварительно обученных вложений мы можем указать их в качестве весов в слое внедрения keras. Для использования нескольких вложений подойдет ли указание нескольких слоев внедрения? т.е.
embedding_layer1 = Embedding(len(word_index) + 1,
EMBEDDING_DIM,
weights=[embedding_matrix_1],
input_length=MAX_SEQUENCE_LENGTH,
trainable=False)
embedding_layer2 = Embedding(len(word_index) + 1,
EMBEDDING_DIM,
weights=[embedding_matrix_2],
input_length=MAX_SEQUENCE_LENGTH,
trainable=False)
model.add(embedding_layer1)
model.add(embedding_layer2)
Это предлагает суммировать их и представлять их в одном слое, а это не то, что мне нужно.
3 ответа
Я столкнулся с той же проблемой, потому что слой keras.Embedding внутри использует какой-то объект (назовем его x_object), который инициализируется в глобальном сеансе keras.backend K. Следовательно, второй слой встраивания выдает исключение, говоря, что x_object имя уже существует в графике и не может быть добавлено снова.
Вот пример использования нескольких встраиваемых слоев через несколько входов с использованием функционального API Keras. Это для соревнований Kaggle, поэтому вам придется прочитать код. Они снабжают сеть словарем с ключом для каждого ввода данных. Это довольно умно, и я смог построить отдельную модель, используя эту среду, которая работала хорошо.
если вы хотите использовать несколько слоев вложения в модели, ответ находится в этой теме Несколько слоев встраивания для модели Keras Sequential