使用许多文本输入微调 BERT HuggingFace

问题描述

我正在尝试微调以表格数据作为输入的 BERT/transformer 模型。

每一行都有许多文本输入和一些数字特征。

我想在一侧有一个神经网络。然后是另一侧的变压器。转换器将接受文本输入。神经网络将接受数字输入。输出将被连接起来,最后一个密集的 1 sigmoid 层将产生一个预测。

def bert_model():
    num_columns = 10
    inputs = []
    numeric_inputs = layers.Input(shape = (window_size,num_columns))
    categorical_inputs = layers.Input(shape = (window_size,num_columns))
    
    inputs.append(numeric_inputs)
    inputs.append(categorical_inputs)
    
    input_ids = layers.Input(shape=(512,),name='input_token',dtype='int32')
    input_masks_ids = layers.Input(shape=(512,name='masked_token',dtype='int32')
    unpooledoutputs = tfbert_model(input_ids,input_masks_ids)
    bert_layer = layers.Dropout(0.1)(unpooledoutputs.pooler_output)
    inputs.append(input_ids)
    inputs.append(input_masks_ids)
    # textual data
    for i in range(1,window_size):
        input_ids = layers.Input(shape=(512,name=f'input_token_{i}',dtype='int32')
        input_masks_ids = layers.Input(shape=(512,name=f'masked_token_{i}',dtype='int32')
        inputs.append(input_ids)
        inputs.append(input_masks_ids)
    
        unpooledoutputs = tfbert_model(input_ids,input_masks_ids)
        unpooledoutputs = layers.Dropout(0.1)(unpooledoutputs.pooler_output)
        bert_layer = layers.Concatenate()([bert_layer,\
                                                 unpooledoutputs])
    ... rest of the concatenation with other model

这是正确的方法吗?我想使用单个 bert 模型对所有输入进行微调。我确实希望必须使用 50 个 BERT 模型,每个文本输入一个,但只需要一个

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)