使用CNN对预训练的BERT进行微调。如何禁用遮罩

时间:2020-03-15 23:07:56

标签: python keras conv-neural-network text-classification bert-language-model

有人在Keras中使用CNN来微调预训练的BERT吗? 我一直在尝试设计此模型,但是预先训练的模型随附了Masks(我认为是在嵌入层中),并且当在编码器层之一的输出上构建微调体系结构时,会产生此错误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

0 个答案:

没有答案