Тонкая настройка предварительно обученного BERT с CNN. Как отключить маскировку - PullRequest
1 голос
/ 16 марта 2020

Кто-нибудь использовал CNN в Керасе для точной настройки предварительно обученного BERT? Я пытался спроектировать это, но предварительно обученная модель поставляется с Масками (я думаю, что на уровне внедрения), и когда архитектура точной настройки построена на выходе одного из слоев кодировщика, она выдает эту ошибку Layer conv1d_1 does not support masking, but was passed an input_mask

До сих пор я пробовал некоторые предлагаемые обходные пути, такие как использование keras_trans_mask для удаления маски перед CNN и добавления ее позже. Но это приводит и к другим ошибкам.

Можно ли отключить маскировку в предварительно обученной модели или есть обходной путь для этого?

РЕДАКТИРОВАТЬ: Это код, с которым я работаю

inputs = model.inputs[:2] 
layer_output = model.get_layer('Encoder-12-FeedForward-Norm').output  
conv_layer= keras.layers.Conv1D(100, kernel_size=3, activation='relu', 
data_format='channels_first')(layer_output)   
maxpool_layer = keras.layers.MaxPooling1D(pool_size=4)(conv_layer)
flat_layer= keras.layers.Flatten()(maxpool_layer)
outputs = keras.layers.Dense(units=3, activation='softmax')(flat_layer)
model = keras.models.Model(inputs, outputs)
model.compile(RAdam(learning_rate =LR),loss='sparse_categorical_crossentropy',metrics=['sparse_categorical_accuracy'])

Так что layer_output содержит маску, и ее нельзя применить к conv1d

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