Как использовать предварительно обученную модель BERT в Keras Embedding layer

#python-3.x #tensorflow #keras #nlp

#python-3.x #тензорный поток #keras #nlp

Вопрос:

Как мне использовать предварительно обученную модель BERT, например bert-base-uncased , в качестве весов в слое встраивания в Keras?

В настоящее время я создаю встраивания word с использованием модели BERT, и это занимает много времени. И я присваиваю эти веса, как в примере, показанном ниже

 model.add(Embedding(307200, 1536, input_length=1536, weights=[embeddings]))
  

Я искал в Интернете, но метод приведен в PyTorch. Мне нужно сделать это в Keras. Пожалуйста, помогите.

Комментарии:

1. У встраивания есть embeddings_initializer аргументы, вы могли бы использовать его следующим образом embeddings_initializer=np.ones((307200, 1536)) .

2. На самом деле это не то, о чем я спрашивал. Если я инициализирую embeddings_initiliazer , как вы сказали, где я передам предварительно обученную модель BERT? В моем коде weights это слой встраивания, который я сгенерировал вручную. Вместо этого мне нужна предварительно обученная модель для весов.

3. Насколько я понимаю, вы просто хотите передать предварительно обученный режим BERT новой модели и использовать предварительно обученные вложения для точной настройки новой модели, верно?

4. Да, я хочу, чтобы в моей модели использовались предварительно обученные вложения BERT.

5. Затем концентратор. KerasLayer — это то, что вы должны использовать. Вы можете сначала сохранить модель BERT в SavedModel формате, а затем загрузить ее с помощью hub. KerasLayer как слой keras, который может быть добавлен к другим моделям.