我正在尝试使用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?
答案 0 :(得分:0)
“ DL4J支持GPU并与Apache Spark和Hadoop等分布式计算软件兼容。”来自https://deeplearning4j.org
额外的Spark或Hadoop实例可能有助于扩展性能。