当前位置: 首页 > wzjs >正文

济南高新区 网站建设国外网站建设视频教学

济南高新区 网站建设,国外网站建设视频教学,建设银行网站能买手机,代理厦门网站设计公司文章目录 简介GPU加速 代码实现kmeans聚类结果kmeans 绘图函数相关资料参考 简介 本文使用text2vec模型,把文本转成向量。使用text2vec提供的训练好的模型权重进行文本编码,不重新训练word2vec模型。 直接用训练好的模型权重,方便又快捷 完整…

文章目录

    • 简介
      • GPU加速
    • 代码实现
    • kmeans
    • 聚类结果
    • kmeans 绘图函数
    • 相关资料参考

简介

本文使用text2vec模型,把文本转成向量。使用text2vec提供的训练好的模型权重进行文本编码,不重新训练word2vec模型。

直接用训练好的模型权重,方便又快捷

完整可运行代码如下:
https://github.com/JieShenAI/csdn/blob/main/machine_learning/kmeans_pytorch.ipynb

GPU加速

传统sklearn的TF-IDF文本转向量,在CPU上计算速度较慢。使用text2vec通过cuda加速,加快文本转向量的速度。
传统使用sklearn的kmeans聚类算法在CPU上计算,如遇到大批量的数据,计算耗时太长。
故本文使用fast-pytorch-kmeans 和 kmeans_pytorch包,基于pytorch在GPU上计算,提高聚类速度。

代码实现

装包

pip install fast-pytorch-kmeans text2vec
import torch
import numpy as npfrom text2vec import SentenceModel

不使用SentenceModel模型也可以,在 text2vec 中,还有很多其他的向量编码模型供选择。

文本编码模型

embedder = SentenceModel()

异常情况说明,该模型需要从huggingface下载模型权重,目前被墙了。(请想办法解决,或者尝试其他的编码模型)
在这里插入图片描述

语料库如下:

# Corpus with example sentences
corpus = ['花呗更改绑定银行卡','我什么时候开通了花呗','A man is eating food.','A man is eating a piece of bread.','The girl is carrying a baby.','A man is riding a horse.','A woman is playing violin.','Two men pushed carts through the woods.','A man is riding a white horse on an enclosed ground.',
]
corpus_embeddings = embedder.encode(corpus)
# numpy 转成 pytorch, 并转移到GPU显存中
corpus_embeddings = torch.from_numpy(corpus_embeddings).to('cuda')

如下图所示,编码的向量是768维;

type(corpus_embeddings), corpus_embeddings.shape

在这里插入图片描述

kmeans

kmeans_pytorch vs fast-pytorch-kmeans:
在实验过程中,利用kmeans_pytorch 针对30万个词进行聚类的时候,发现显存炸了,程序崩溃退出。30万个词的词向量,占用显存还不到2G,但是运行kmeans_pytorch后,显存就炸了。

fast-pytorch-kmeans不存在上述显存崩溃的问题。本以为词向量很多会跑很长时间,但fast-pytorch-kmeans在非常短的时间内就完成了kmeans聚类。
后来一想也理解了,先开始在CPU跑花费了很长时间,这是因为CPU并行很差,需要逐个跑完。而在GPU里大量数据拼成一个矩阵,做一个减法,就可以算出批量节点和中心点的距离。

# kmeans
# from kmeans_pytorch import kmeans
from fast_pytorch_kmeans import KMeansnum_class = 3 # 分类类别数
kmeans = KMeans(n_clusters=num_class, mode='euclidean', verbose=1)# 模型预测结果
labels = kmeans.fit_predict(corpus_embeddings)

聚类程序运行如下:

used 2 iterations (0.3682s) to cluster 9 items into 3 clusters

模型中心点坐标:

kmeans.centroids

在这里插入图片描述

聚类结果

class_data = {i:[]for i in range(3)
}for text,cls in zip(corpus, labels):class_data[cls.item()].append(text)class_data

文本聚类结果如下:
0: 女
1:男
2: 花呗
在这里插入图片描述

kmeans 绘图函数

封装了KMeansPlot 绘图类,方便聚类结果可视化

from sklearn.decomposition import PCA
import matplotlib.pyplot as pltclass KMeansPlot:def __init__(self, numClass=4, func_type='PCA'):if func_type == 'PCA':self.func_plot = PCA(n_components=2)elif func_type == 'TSNE':from sklearn.manifold import TSNEself.func_plot = TSNE(2)self.numClass = numClassdef plot_cluster(self, result, pos, cluster_centers=None):plt.figure(2)Lab = [[] for i in range(self.numClass)]index = 0for labi in result:Lab[labi].append(index)index += 1color = ['oy', 'ob', 'og', 'cs', 'ms', 'bs', 'ks', 'ys', 'yv', 'mv', 'bv', 'kv', 'gv', 'y^', 'm^', 'b^', 'k^','g^'] * 3for i in range(self.numClass):x1 = []y1 = []for ind1 in pos[Lab[i]]:# print ind1try:y1.append(ind1[1])x1.append(ind1[0])except:passplt.plot(x1, y1, color[i])if cluster_centers is not None:#绘制初始中心点x1 = []y1 = []for ind1 in cluster_centers:try:y1.append(ind1[1])x1.append(ind1[0])except:passplt.plot(x1, y1, "rv") #绘制中心plt.show()def plot(self, weight, label, cluster_centers=None):pos = self.func_plot.fit_transform(weight)# 高维的中心点坐标,也经过降维处理cluster_centers = self.func_plot.fit_transform(cluster_centers)self.plot_cluster(list(label), pos, cluster_centers)

kmeans.centroids :是一个高维空间的中心点坐标,故在plot函数中,将其降维到2D平面上;

k_plot = KMeansPlot(num_class)
k_plot.plot(corpus_embeddings.to('cpu'),labels.to('cpu'),kmeans.centroids.to('cpu')
)

在这里插入图片描述

完整可运行代码如下:
https://github.com/JieShenAI/csdn/blob/main/machine_learning/kmeans_pytorch.ipynb

相关资料参考

  • 动手实战基于 ML 的中文短文本聚类
  • tfidf和word2vec构建文本词向量并做文本聚类
    提到训练word2vec模型,silhouette_score_show(word2vec, 'word2vec') 轮廓系数,判断分几个类别最好。
  • 机器学习:Kmeans聚类算法总结及GPU配置加速demo
    PyTorch kmeans 加速。from scratch 实现;
  • KMeans算法全面解析与应用案例 通俗易懂的原理讲解
  • pytorch K-means算法的实现 底层代码实现
  • 【pytorch】Kmeans_pytorch用于一般聚类任务的代码模板 使用pytorch封装的kmeans包实现,包括训练和预测;
  • text2vec 包

文章转载自:

http://HERXH9Rj.wmsbd.cn
http://ya7UegrY.wmsbd.cn
http://5ixUSVA4.wmsbd.cn
http://lBr46ZDl.wmsbd.cn
http://V1s8zkpd.wmsbd.cn
http://YVceNUCf.wmsbd.cn
http://avNSm5NA.wmsbd.cn
http://n5ZNvktA.wmsbd.cn
http://r3iB576c.wmsbd.cn
http://Wuw5wHU0.wmsbd.cn
http://lRLfgxSp.wmsbd.cn
http://GDR1cqbj.wmsbd.cn
http://DBYi7k3i.wmsbd.cn
http://BySZRgn4.wmsbd.cn
http://6hQaVmrg.wmsbd.cn
http://SqqoOlQh.wmsbd.cn
http://4d2ft76Y.wmsbd.cn
http://EXfH2hNV.wmsbd.cn
http://9gcStCzV.wmsbd.cn
http://UeQQjm9W.wmsbd.cn
http://2Lily1eC.wmsbd.cn
http://T7hZGmeX.wmsbd.cn
http://xwkKKyRd.wmsbd.cn
http://hqq6hEoP.wmsbd.cn
http://ttxOJzXf.wmsbd.cn
http://uinGHeGs.wmsbd.cn
http://98pflHVs.wmsbd.cn
http://C77PpImO.wmsbd.cn
http://Zu26angn.wmsbd.cn
http://936vkZB1.wmsbd.cn
http://www.dtcms.com/wzjs/769649.html

相关文章:

  • 网站开发播放大视频卡顿北海 网站建设 公司
  • 大连h5网站建设自己制作app的应用程序
  • 少林寺网站谁做的电脑网站显示安全证书有问题怎么解决
  • 国外网站在国内做镜像站点python做h5网站
  • 泰安建设工程招聘信息网站wordpress搭建在线教育
  • 做进口产品的网站注册公司登陆哪个网站
  • 如何制作个人作品网站东莞常平医院
  • 京东这样的网站怎么做福州seo公司排名
  • 集团网站开发专业网页制作什么价格
  • 自己做的网站服务器开了进不去精美网站建设
  • 网站广告设计做网站月薪
  • 佛山新网站建设机构摄影网站 蜂鸟
  • 免费浏览网站的软件wordpress批量修改引用网址
  • 推广型的网站怎么做wordpress seo h1标签
  • 深圳市宝安区建设工程交易中心seo排名优化代理
  • 滨海新区商城网站建设领优惠券的网站是怎么做的
  • 密云区社区建设网站沧州工商联网站建设
  • 效果图网站源码关于网站建设分类
  • 企业推广是什么意思网站seo推广招聘
  • 淄博高端网站建设乐达wordpress页面的添加
  • 做企业门户网站要准备哪些内容网站建设服务器环境配置
  • 北京建网站公司哪家便宜赤峰建设淘宝网站
  • 象山专业网站建设旅游网站开发的目的和意义
  • 做网站版权所有怎么写免费校园网站建设
  • cms仿站网站被百度惩罚
  • 网站的建设可以起到什么作用是什么意思o2o网站开发相关技术
  • 做中文网站的公司做兼职哪个网站比较好
  • 教育机构网站是wordpress首页优化缩略图
  • 深圳龙华建网站公司vr看房制作软件
  • 网站备案 法人代表宁波北仑做公司网站