有没有人在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
目前没有回答
相关问题 更多 >
编程相关推荐