百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
M

Multicore-TSNE

> 编程语言
开源

使用 Python 和 Torch 包装器实现并行 t-SNE。

1.9K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

使用 Python 和 Torch 包装器实现并行 t-SNE。

多核 t-SNE() 这是 L. Van der Maaten 使用 Python CFFI 封装的 Barnes-Hut t-SNE() 的多核修改版。此代码在 1 核上也比 sklearn.TSNE() 运行得更快(截至 0.18 版本)。

  • 第二步: 使用梯度下降优化嵌入。这个部分基本上是连续的,因此我们只能在迭代内进行优化。实际上,有些部分可以有效地并行化,但并不是所有部分都可以并行化。这就是为什么第二步的加速不会像第一步的加速那样显著,但仍然有改进的空间。

所以什么时候可以从并行化中受益呢? 实际上,第二步的计算时间是 D 的常数,主要取决于 N。第一部分的时间主要取决于 D,因此对于小的 D, time(Step 1) << time(Step 2), 对于大的 D, time(Step 1) >> time(Step 2)。由于我们只擅长并行化第一步,当 D 足够大时,我们将受益最大( MNIST 的 D = 784 很大, D = 10 即使对于 N=1000000 也不是很大)。我最初为 Springleaf 竞赛 编写了多核修改,当时我的数据表大约为 300000 x 3000,距离竞赛结束还有几天时间,因此任何加速都很有用。

有趣的是,这个代码比其他实现要快。我们将其与 sklearn(当然是 Barnes-Hut)进行了比较,还有 L. Van der Maaten 的 bhtsne、py_bh_tsne 仓库(使用 QuadTree 的 bhtsne 的 cython 包装器)。每次运行时,Perplexity = 30,theta=0.5。事实上,py_bh_tsne 仓库 使用更多编译器优化标志时,其速度与这个代码相同。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++barnes-hut-tsnemulticorepy-bh-tsnetsne

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言