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