Java 深度学习4J k-表示非常慢

Java 深度学习4J k-表示非常慢,java,multithreading,k-means,deeplearning4j,nd4j,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个数据点组

我正在尝试使用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?

“DL4J支持GPU,并且与分布式计算软件(如Apache Spark和Hadoop)兼容。”摘自


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

介意提出一个问题吗?我们并没有严格坚持这一观点。不过,我们至少可以看一看这一点。不过,您可能希望发送一个请求。问题已经提出:如果我得到一些指导,我可以尝试改善这种情况。10xHi,这实际上是错误的。这些不同算法有spark实现。您在这里看到的旧kmeans是一个使用单个框的更简单的实现。除此之外,我们最近还通过了kmeans。