DeepLearning4j k-意味着很慢

时间:2017-10-29 00:58:02

标签: java multithreading k-means deeplearning4j nd4j

我正在尝试使用DL4J的K-Means实现。我把它设置如下:

int CLUSTERS = 5;
int MAX_ITERATIONS = 300;
String DISTANCE_METRIC = "cosinesimilarity";
KMeansClustering KMEANS = KMeansClustering.setup(CLUSTERS, MAX_ITERATIONS, DISTANCE_METRIC);

我的数据点是大小为300(双精度)的向量,我的测试集每次包含~100个数据点(给出或取出)。我以单线程方式在我的CPU(4个内核)上运行它。

评估需要很长时间(每个示例几秒钟)。

我在算法的实现中看了一眼,看起来它的并发级别非常高 - 正在创建许多线程(确切地说,每个数据点一个)并且并行执行。 也许这是一种矫枉过正? 有什么方法可以通过配置控制它吗?其他加快速度的方法?如果没有,是否还有其他基于Java的快速解决方案来执行k-means?

1 个答案:

答案 0 :(得分:0)

“ DL4J支持GPU并与Apache Spark和Hadoop等分布式计算软件兼容。”来自https://deeplearning4j.org

额外的Spark或Hadoop实例可能有助于扩展性能。