lua - Torch 中的集群

标签 lua machine-learning cluster-analysis torch

我正在尝试学习 Torch机器学习库。

我知道 Torch 的重点是神经网络,但只是为了它,我尝试在它上运行 kmeans。如果没有的话,Torch 实现了快速连续存储,这应该类似于 numpy 数组,并且 Torch cheatsheet引用unsup用于无监督学习的库,为什么不呢?

我已经有 a benchmark我用于 K-means 实现。尽管所有实现都故意使用未优化的算法(自述文件解释了原因),LuaJIT 能够在 611 毫秒内聚类 100000 个点。 Nim 中(不在存储库上)的优化(或者我应该说,不是故意减慢)实现运行时间为 68 毫秒,所以我期待介于两者之间的东西。

不幸的是,情况更糟,所以我怀疑我做错了什么。我写的是

require 'io'
cjson = require 'cjson'
require 'torch'
require 'unsup'

content = io.open("points.json"):read("*a")
data = cjson.decode(content)
points = torch.Tensor(data)
timer = torch.Timer()
centroids, counts = unsup.kmeans(points, 10, 15)

print(string.format('Time required: %f s', timer:time().real))

运行时间约为6秒!

谁能检查一下我在使用 Torch/unsup 时是否做错了什么?

如果有人想尝试,文件points.json位于上述存储库中

最佳答案

Can anyone check if I have done something wrong in using Torch/unsup?

一切听起来都是正确的(注意:建议使用本地变量):

  • data 是一个二维表,您使用相应的 Torch constructor ,
  • points 是一个带有 nb 的二维张量。行数 = nb.点和nb。 cols = 点维度(此处为 2)。这就是 unsup.kmeans expects as input .

您可以做的是更改批量大小(第四个参数)。它可能会影响性能。您还可以使用详细模式来输出每次迭代的平均时间:

-- batch size = 5000, no callback, verbose mode
centroids, counts = unsup.kmeans(points, 10, 15, 5000, nil, true)

关于lua - Torch 中的集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29164812/

相关文章:

c++ - 在 C++ Windows 应用程序中嵌入和扩展的简单解释器

redis - 如何在脚本中对 lua 表结果进行 zscan

android - 如何使分数增加触摸分数?

javascript - 在 Node 中使用 lua 脚本扫描按键

php - Google Maps API v3的服务器端集群

apache-spark - 如何在 pyspark 中测试/训练按列值而不是按行分割

machine-learning - 如何在 AWS SageMaker 上托管复合模型

python - Sklearn MLP 分类器隐藏层优化 (RandomizedSearchCV)

algorithm - 什么是好的重叠组算法?

python - DBSCAN 轮廓系数 : does this for-loop work?