CNN对伯特进行了微调。如何禁用掩蔽

2024-04-23 11:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有人在Keras使用CNN对预先训练好的BERT进行微调? 我一直在尝试设计它,但是预先训练的模型带有遮罩(我认为是在嵌入层),当微调架构建立在一个编码器层的输出上时,它会给出这个错误Layer conv1d_1 does not support masking, but was passed an input_mask

到目前为止,我已经尝试了一些建议的解决方法,比如在CNN之前使用keras_trans_mask移除掩码,然后再添加回去。但这也会导致其他错误

是否可以在预先训练的模型中禁用掩蔽,或者是否有解决方法

编辑:这是我正在使用的代码

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


Tags: 方法模型layeroutputmodellayers错误mask