我试图使用带有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)
在其他模型的实现中,如nbsvm、fasttext、来自Ktrain的bigru,它非常容易,因为texts_from_array函数返回一个numpy数组,但使用distilbert它返回一个TransformerDataset,因此不可能使用learner.model.product((对序列进行预测,因为它生成了一个python索引异常。考虑到我有多标签分类问题,我也不可能使用validate((方法来生成混淆矩阵。我的问题是,我如何使用distilbert在Ktrain的测试序列上进行测试,我对此的需求来自于我的度量函数是基于sklearn.metric库实现的,它需要numpy格式的测试和验证序列。
您可以使用Predictor
实例,如教程中所示。
Predictor
简单地使用preproc
对象将原始文本转换为模型所期望的格式,并将其提供给模型。