使用Scala Breeze的SBT编译器崩溃

使用Scala Breeze的SBT编译器崩溃,scala,sbt,scala-breeze,Scala,Sbt,Scala Breeze,我正在编写一个代码来执行内核K-Means(aka,但有一个技巧)。我需要生成数据,作为第一个简单的生成器,我尝试实现一个高斯混合模型。这是我的代码: package p02kmeans import breeze.linalg._ import breeze.stats.distributions._ /** * First data generation is simple, gaussian mixture model. */ object Data { class Gauss

我正在编写一个代码来执行内核K-Means(aka,但有一个技巧)。我需要生成数据,作为第一个简单的生成器,我尝试实现一个高斯混合模型。这是我的代码:

package p02kmeans

import breeze.linalg._
import breeze.stats.distributions._

/**
 * First data generation is simple, gaussian mixture model.
 */
object Data {
  class GaussianClassParam (
      val mean: Double,
      val sd: Double)

  /**
   * @param proportion marginal probability for each label
   * @param param param[j][k] returns the GaussianClassParam for the k class of the j variable
   * @param nObs number of observations to be generated
   * @result DenseMatrix_ij where i is the observation index and j is the variable number
   */
  def gaussianMixture(
      proportion: DenseVector[Double],
      param: Vector[Vector[GaussianClassParam]],
      nObs: Int)
  : DenseMatrix[Double] = {
    val nVar = param.size
    val multiSampler = Multinomial(proportion) // sampler for the latent class
    val varSamplerVec = param.map(v => v.map(c => Gaussian(c.mean, c.sd)))
    val zi = DenseVector.fill[Int](nObs)(multiSampler.sample)

    val data = DenseMatrix.tabulate[Double](nObs, nVar)((i, j) => varSamplerVec(j)(zi(i)).sample)

    return data
  }
}
当我尝试编译代码时(我在Windows 10上使用Scala Ide和sbt eclipse),我会遇到两个错误:

  • Scala编译器中的错误:断言失败:列表(方法apply$mcI$sp,方法apply$mcI$sp)
  • SBT builder在编译时崩溃。错误消息为“断言失败:列表(方法应用$mcI$sp,方法应用$mcI$sp)”。有关详细信息,请查看错误日志。
该错误由以下行触发:

val data = DenseMatrix.tabulate[Double](nObs, nVar)((i, j) => varSamplerVec(j)(zi(i)).sample)
然后消失在:

val data = DenseMatrix.tabulate[Double](nObs, nVar)((i, j) => 12.0)
你能帮我调试一下吗

我的sbt配置:

name := "Sernel"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies  ++= Seq(
  "org.scalanlp" %% "breeze" % "0.13.1",
  "org.scalanlp" %% "breeze-natives" % "0.13.1",
  "org.scalanlp" %% "breeze-viz" % "0.13.1"
)
我的OSX设置也有同样的错误


如果您想测试整个软件包(就像,如果您想重现错误一样),代码可以在Github上找到:,我可以提供方向:)。

这似乎是一个编译器错误(我认为在scala宏中,Breeze正在使用这些错误)。您可以尝试在项目中执行完全清理(甚至可能包括
.ivy2
文件夹-这可能是MacOS和Windows设置之间的差异),还可以将scala更新为2.11.11(甚至可能是2.12.x)

然而,Scala 2.11.6的类似问题(有些东西告诉我它是在Scala的后续版本中继承的)并没有得到修复:

因此,有时您可能需要重复执行清理,或者尝试其他类似NumPy的方法,如:scalala、Nd4j/Ndjs


尝试另一个IDE(IDEA/Atom)或尝试使用“裸”SBT也会有所帮助,因为Eclipse可能会通过调用Scala的编译器前端来进行干扰。

这似乎是一个编译器错误(我认为在Scala宏中,Breeze正在使用这些错误)。您可以尝试在项目中执行完全清理(甚至可能包括
.ivy2
文件夹-这可能是MacOS和Windows设置之间的差异),还可以将scala更新为2.11.11(甚至可能是2.12.x)

然而,Scala 2.11.6的类似问题(有些东西告诉我它是在Scala的后续版本中继承的)并没有得到修复:

因此,有时您可能需要重复执行清理,或者尝试其他类似NumPy的方法,如:scalala、Nd4j/Ndjs


尝试另一个IDE(IDEA/Atom)或尝试使用“裸”SBT也会有所帮助,因为Eclipse可能会通过调用Scala的编译器前端来进行干扰。

这似乎是一个编译器错误(我认为在Scala宏中,Breeze正在使用这些错误)。您可以尝试在项目中执行完全清理(甚至可能包括
.ivy2
文件夹-这可能是MacOS和Windows设置之间的差异),还可以将scala更新为2.11.11(甚至2.12.x),谢谢!我不得不在Eclipse中编辑更新站点,因为这里提出的Scala IDE仅限于Scala 2.11.8。现在使用最新版本的Shipping Scala 2.12.2,错误消失了:)。如果你想提出此评论作为答案,我会选择它,这将关闭问题:)。哦,等等,这很奇怪。我曾经能够编译过一次,但是在代码中稍作修改之后,错误又回来了。实际上,当我在另一个文件中更改一个数值常量时,它会崩溃。但是,每次出现问题时清理项目“解决”了问题。所以,答案的另一部分是有效的:)。这看起来像是一个编译器错误(我想是在scala宏中,因为Breeze正在使用它们)。您可以尝试在项目中执行完全清理(甚至可能包括
.ivy2
文件夹-这可能是MacOS和Windows设置之间的差异),还可以将scala更新为2.11.11(甚至2.12.x),谢谢!我不得不在Eclipse中编辑更新站点,因为这里提出的Scala IDE仅限于Scala 2.11.8。现在使用最新版本的Shipping Scala 2.12.2,错误消失了:)。如果你想提出此评论作为答案,我会选择它,这将关闭问题:)。哦,等等,这很奇怪。我曾经能够编译过一次,但是在代码中稍作修改之后,错误又回来了。实际上,当我在另一个文件中更改一个数值常量时,它会崩溃。但是,每次出现问题时清理项目“解决”了问题。因此,答案的另一部分是有效的:)。