我正在尝试使用DL4J的K-Means实现。我将其设置如下:
int CLUSTERS = 5;
int MAX_ITERATIONS = 300;
String DISTANCE_METRIC = "cosinesimilarity";
KMeansClustering KMEANS = KMeansClustering.setup(CLUSTERS, MAX_ITERATIONS, DISTANCE_METRIC);
我的数据点是大小为300( double )的 vector ,我的测试集每次(给定或获取)由〜100个数据点组成。我以单线程方式在我的CPU(4核)上运行它。
评估需要很长时间(每个示例几秒钟)。
我偷看了算法的实现,看起来它的并发级别很高-正在创建许多线程(准确地说是每个数据点一个)并并行执行。
也许这是一个矫kill过正?
有什么办法可以通过配置控制它?其他加快速度的方法吗?如果不是,是否还有其他基于Java的快速解决方案来执行k-means?
最佳答案
“DL4J支持GPU,并与诸如Apache Spark和Hadoop之类的分布式计算软件兼容。”来自https://deeplearning4j.org
额外的Spark或Hadoop实例可能有助于扩展性能。
关于java - DeepLearning4j k-均值非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46995912/