tensorflow - 如何使用 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 格式的测试和验证序列。
解决方案
您可以使用教程Predictor
中所示的实例。
Predictor
简单地使用对象将preproc
原始文本转换为模型期望的格式并将其提供给模型。
推荐阅读
- twilio - Studio MAKE HTTP REQUEST return sid
- git - Git 修订图不正确
- wordpress - WooCommerce:仅适用于一个优惠券代码的有条件手续费
- sql-server - 每天删除 /var/opt/mssql/log 中的所有文件?
- powershell - PowerShell 如何在一月份处理 ((Get-Date).Month)-1?
- python - python生成器yield语句不yield
- python - 为什么我插入 AWS Postgres 数据库(使用 psycopg2)的任何行都会立即变成死元组?
- cocoa - 保存子 NSManagedObjectContext 时在 NSOrderedSet 上调用额外不正确的 KVO 插入
- ruby-on-rails - 如何将键/值对添加到我的哈希中?
- javascript - 如何通过LINE ID搜索学生ID并从firestore中的收藏成绩中获取成绩?