Nlp 使用经过预培训的变压器和keras

Nlp 使用经过预培训的变压器和keras,nlp,text-classification,bert-language-model,Nlp,Text Classification,Bert Language Model,我想使用这个预先培训过的模型: 我使用此代码使用Keras(我通常使用的库)构建模型: def构建模型(变压器,最大长度=512): """ 用于训练模型的函数 """ input\u word\u ids=input(shape=(max\u len,),dtype=tf.int32,name=“input\u word\u ids”) 顺序输出=变压器(输入字ID)[0] cls_标记=序列_输出[:,0,:] out=密集(1,激活='sigmoid')(cls_标记) 模型=模型(输入=

我想使用这个预先培训过的模型:

我使用此代码使用Keras(我通常使用的库)构建模型:

def构建模型(变压器,最大长度=512):
"""
用于训练模型的函数
"""
input\u word\u ids=input(shape=(max\u len,),dtype=tf.int32,name=“input\u word\u ids”)
顺序输出=变压器(输入字ID)[0]
cls_标记=序列_输出[:,0,:]
out=密集(1,激活='sigmoid')(cls_标记)
模型=模型(输入=输入\字\ ID,输出=输出)
model.compile(Adam(lr=3e-5),loss='binary\u crossentropy',
metrics=[tf.keras.metrics.AUC()]
#从1e-5更改为3e-5
回归模型
使用strategy.scope():
model_name=“仇恨言论CNERG/dehatebert单阿拉伯语”
变压器_层=(
变压器。自动模型。来自预培训(模型名称)
)
模型=构建模型(变压器层,最大长度=最大长度)
发生以下错误:

AttributeError回溯(最近一次调用)
在()
5.TFAutoModel.from_pretrained('jplu/tf xlm roberta large'))
6     )
---->7模型=构建模型(变压器层,最大长度=最大长度)
2帧
/usr/local/lib/python3.7/dist-packages/transformers/models/bert/modeling\u bert.py in forward(self、输入ID、注意掩码、标记类型ID、位置ID、头部掩码、输入嵌入、编码器隐藏状态、编码器注意掩码、过去的密钥值、使用缓存、输出注意、输出隐藏状态、返回dict)
922 raise VALUE ERROR(“不能同时指定输入\u ID和输入\u嵌入”)
923 elif输入_ID不是无:
-->924 input_shape=input_ID.size()
925批量大小,序列长度=输入形状
926 elif输入_嵌入不是无:
AttributeError:“KerasTensor”对象没有属性“size”

huggingfaces的模型可以使用
transformers
库开箱即用。它们可用于不同的后端(tensorflow、pytorch)

将huggingface的变压器与keras一起使用(在“创建模型”功能中)

一般来说,您可以使用(“在变压器中使用”按钮)中的示例代码加载huggingface的变压器:

从transformers导入AutoTokenizer,AutoModelForSequenceClassification
标记器=自动烹饪器。来自预训练(“仇恨言论CNERG/dehatebert单阿拉伯语”)
模型=自动模型,用于顺序分类。来自预先训练的(“仇恨言论CNERG/dehatebert单阿拉伯语”)
然后继续推断,显示了从负载变压器模型获取输出的方法:

inputs=tokenizer(“returnبtensors=“pt”)
#我们对标签不感兴趣,只是模型的推断
#标签=火炬。张量([1])。未queze(0)#批量1
输出=模型(**输入)#,标签=标签)
#该模型返回logits,但我们需要一个概率,因此我们使用softmax函数
probs=pytorch.softmax(输出['logits'],1)

您是否正在尝试微调Bert模型?不,我想使用此模型对我自己的数据进行文本分类!为什么需要添加致密层?您为什么不使用transformer库来进行测试?我如何使用它!?我是变压器的初学者!