带有CNN的微调预训练BERT。如何禁用屏蔽

问题描述 投票:1回答:1

有人在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

python keras conv-neural-network text-classification bert
1个回答
0
投票

我遇到了与您相同的问题。您有禁用屏蔽的解决方案吗?

© www.soinside.com 2019 - 2024. All rights reserved.