【发布时间】:2017-11-19 01:04:43
【问题描述】:
我在 Java 版本的 Spark 中使用潜在狄利克雷分配。
以下行可以正常工作:
LDAModel ldaModel = new LDA()//
.setK( NUM_TOPICS )//
.setMaxIterations( MAX_ITERATIONS )//
.run( corpus );
这使用(我相信)默认的 EM 优化器。
但是,当我尝试使用随机变分优化器时,如下:
OnlineLDAOptimizer optimizer = new OnlineLDAOptimizer()//
.setMiniBatchFraction( 2.0 / MAX_ITERATIONS );
LDAModel ldaModel = new LDA()//
.setK( NUM_TOPICS )//
.setOptimizer( optimizer )//
.setMaxIterations( MAX_ITERATIONS )//
.run( corpus );
我得到以下信息:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 11.0 failed 1 times, most recent failure: Lost task 1.0 in stage 11.0 (TID 50, localhost): java.lang.IndexOutOfBoundsException: (0,2) not in [-3,3) x [-2,2)
at breeze.linalg.DenseMatrix.apply(DenseMatrix.scala:84)
at breeze.linalg.Matrix$class.apply(Matrix.scala:39)
...
有没有人成功地让在线优化器在 Java 版本的 Spark 中工作?据我所知,这是这里唯一的区别。
【问题讨论】:
标签: java apache-spark apache-spark-mllib