我正在尝试使用带有蒸馏器模型的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,bigru这样的模型的另一个实现中,它非常简单,因为texts_from_array函数返回一个数值数组,但是对于distilbert,它返回一个TransformerDataset,因此不可能用learner.model.predict()来预测序列,因为它生成了一个python索引异常。考虑到我有多标签分类问题,我也不可能使用validate()方法来生成混淆矩阵。我的问题是,我如何使用distilbert在Ktrain上测试测试序列,我对此的需求来自于我的度量函数是基于sklearn.metric库实现的,并且它需要numpy格式的测试和验证序列。
发布于 2021-06-22 04:22:10
您可以使用tutorial中所示的Predictor实例。
Predictor只需使用preproc对象将原始文本转换为模型所需的格式,并将其提供给模型。
https://stackoverflow.com/questions/67958313
复制相似问题