Кто-нибудь использовал 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