21----导出并运行其他机器学习模型

本博客介绍了如何将传统模型(如TF-IDF + Logistic回归)和PyTorch模型导出到ONNX,并在txtai中进行标注和相似度查询。通过示例展示了从Hugging Face数据集加载情绪数据,训练TF-IDF + Logistic回归模型,将其导出到ONNX,然后在txtai中使用。还训练了一个简单的PyTorch文本分类器,并比较了不同模型的准确性和运行速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

txtai 主要支持Hugging Face Transformers和ONNX模型。这使 txtai 能够连接到 Python 中可用的丰富模型框架,通过 API 将此功能导出到其他语言(JavaScript、Java、Go、Rust),甚至使用 ONNX 导出和本地加载模型。

其他机器学习框架呢?假设我们有一个经过良好调整的现有 TF-IDF + Logistic 回归模型。这个模型能不能导出到ONNX,用在txtai中做标注和相似度查询?或者简单的 PyTorch 文本分类器怎么样?是的,这两个都可以做到!

使用onnxmltools库,可以将来自scikit-learn、XGBoost和其他模型的传统模型导出到 ONNX 并加载 txtai。此外,Hugging Face 的训练器模块可以训练通用 PyTorch 模块。本笔记本将介绍所有这些示例。

安装依赖
安装txtai和所有依赖项。由于本文使用 ONNX 导出,我们需要安装 pipeline extras 包。
pip install txtai[pipeline,similarity] datasets
训练 TF-IDF + 逻辑回归模型
对于这个例子,我们将从 Hugging Face 数据集中加载情绪数据集,并使用 scikit-learn 构建一个 TF-IDF + Logistic 回归模型。

情感数据集具有以下标签:

悲伤 (0)
欢乐 (1)
爱 (2)
愤怒 (3)
恐惧 (4)
惊喜 (5)
from datasets import load_dataset

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline

ds = load_dataset(“emotion”)

Train the model

pipeline = Pipeline([
(‘tfidf’, TfidfVectorizer()),
(‘lr’, LogisticRegression(max_iter=250))
])

pipeline.fit(ds[“train”][“text”], ds[“train”][“label”])

Determine accuracy on validation set

results = pipeline.predict(ds[“validation”][“text”])
labels = ds[“validation”][“label”]

results = [results[x] == label for x, label in enumerate(labels)]
print(“Accuracy =”, sum(results) / len(ds[“validation”]))
Accuracy = 0.8595
86% 的准确率——还不错!虽然我们都沉浸在深度学习和高级方法中,好的 ole TF-IDF + Logistic 回归仍然是一个可靠的表现者并且运行速度更快。如果该级别的准确性有效,则没有理由使事情过于复杂。

使用 txtai 导出和加载
下一节将此模型导出到 ONNX 并展示该模型如何用于相似性查询。
from txtai.pipeline import Labels, MLOnnx, Similarity

def tokenize(inputs, **kwargs):
if isinstance(inputs, str):
inputs = [inputs]

return {"input_ids": [[x] fo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q shen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值