首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中引起IndexOutOfBoundsException的Spark的OnlineLDAOptimizer

在Java中引起IndexOutOfBoundsException的Spark的OnlineLDAOptimizer
EN

Stack Overflow用户
提问于 2015-10-05 16:31:50
回答 2查看 752关注 0票数 1

我在Spark的Java版本中使用了潜在的Dirichlet分配。

下面的代码行可以正常工作:

代码语言:javascript
复制
LDAModel ldaModel = new LDA()//
                        .setK( NUM_TOPICS )//
                        .setMaxIterations( MAX_ITERATIONS )//
                        .run( corpus );

这使用(我相信)默认的EM优化器。

但是,当我尝试使用随机变分优化器时,如下所示:

代码语言:javascript
复制
OnlineLDAOptimizer optimizer = new OnlineLDAOptimizer()//
                                   .setMiniBatchFraction( 2.0 / MAX_ITERATIONS );
LDAModel ldaModel = new LDA()//
                    .setK( NUM_TOPICS )//
                    .setOptimizer( optimizer )//
                    .setMaxIterations( MAX_ITERATIONS )//
                    .run( corpus );

我得到了以下信息:

代码语言:javascript
复制
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中工作?据我所知,这是唯一的区别。

EN

回答 2

Stack Overflow用户

发布于 2016-04-20 01:10:42

我也遇到过类似的问题,结果发现我在为语料库创建SparseVectors时犯了一个错误。

我没有提供所有项的数量作为第一个参数,而是提供了索引和值数组的长度。

这导致了IndexOutOfBoundException

Vectors.sparse(indices.length,indices,values);

虽然这对我来说很有效

Vectors.sparse(numberOfTermsInCorpus,indices,values);

只有在使用OnlineLDAOptimizer时才会发生异常。当使用标准的EM优化器时,我的错误并没有影响模型的创建。

票数 1
EN

Stack Overflow用户

发布于 2015-10-21 00:59:06

我想,问题出在

代码语言:javascript
复制
.setMiniBatchFraction( 2.0 / MAX_ITERATIONS );

你试过了吗?

代码语言:javascript
复制
.setMiniBatchFraction(math.min(1.0, mbf)))

使用mbf是

代码语言:javascript
复制
    val mbf = {
  // add (1.0 / actualCorpusSize) to MiniBatchFraction be more robust on tiny datasets.
  val corpusSize = corpus.count()
  2.0 / maxIterations + 1.0 / corpusSize
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32944219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档