使用 Python 和 Torch 包装器实现并行 t-SNE。
所以什么时候可以从并行化中受益呢? 实际上,第二步的计算时间是 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,或尚未同步最近议题。