首页 > 解决方案 > 如何使用 distilbert 模型预测测试序列?

问题描述

我试图使用带有 distilbert 模型的 Ktrain 来预测测试序列,我的代码如下所示:

trn, val, preproc = text.texts_from_array(x_train=x_train, y_train=y_train,
                                          x_test=x_test, y_test=y_test,
                                          class_names=train_b.target_names,
                                          preprocess_mode='distilbert',
                                          maxlen=350)
model = text.text_classifier('distilbert', train_data=trn, preproc=preproc,multilabel=True)
learner = ktrain.get_learner(model, train_data=trn, val_data=val, batch_size=64)
y_pred = learner.model.predict(val,verbose = 0)

在 Ktrain 的 nbsvm、fasttext、bigru 等模型的其他实现中,它非常简单,因为 texts_from_array 函数返回一个 numpy 数组,但使用 distilbert 它返回一个 TransformerDataset,因此无法使用 learner.model.predict() 对序列进行预测它会生成一个 python 索引异常。鉴于我有多标签分类问题,我也无法使用 validate() 方法生成混淆矩阵。我的问题是如何使用 distilbert 对 Ktrain 的测试序列进行测试,我对此的需求来自于我的度量函数是基于 sklearn.metric 库实现的,并且它需要 numpy 格式的测试和验证序列。

标签: tensorflownlpmultilabel-classificationdistilbertktrain

解决方案


您可以使用教程Predictor中所示的实例。

Predictor简单地使用对象将preproc原始文本转换为模型期望的格式并将其提供给模型。


推荐阅读