1

機械学習用のTorchライブラリを学習しようとしています。

Torch がニューラル ネットワークに重点を置いていることは知っていますが、その目的のために、その上で kmeans を実行しようとしていました。何もないとしても、Torch は numpy 配列に類似する高速連続ストレージを実装し、Torch チートシートは教師なし学習用のunsupライブラリを引用しています。

K-means の実装に使用するベンチマークが既にあります。すべての実装が最適化されていないアルゴリズムを意図的に使用しているにもかかわらず (README で理由が説明されています)、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方は上記のリポジトリにファイルがあります

4

1 に答える 1