Несколько встраиваемых слоев в керас

В случае предварительно обученных вложений мы можем указать их в качестве весов в слое внедрения 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, поэтому вам придется прочитать код. Они снабжают сеть словарем с ключом для каждого ввода данных. Это довольно умно, и я смог построить отдельную модель, используя эту среду, которая работала хорошо.

глубокое обучение, поддержка, 9663

если вы хотите использовать несколько слоев вложения в модели, ответ находится в этой теме Несколько слоев встраивания для модели Keras Sequential

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