【问题标题】:Using Breeze from Java on Spark MLlib在 Spark MLlib 上使用来自 Java 的 Breeze
【发布时间】:2015-01-30 12:26:23
【问题描述】:

在尝试使用 Java 中的 MLlib 时,使用微风矩阵运算的正确方法是什么? 例如scala中的乘法它只是“matrix * vector”。 Java中对应的功能是如何表达的?

有像“$colon$times”这样的方法可以通过正确的方式调用

breeze.linalg.DenseMatrix<Double> matrix= ...
breeze.linalg.DenseVector<Double> vector = ...  

matrix.$colon$times( ...

可能需要一个运算符实例...breeze.linalg.operators.OpMulMatrix.Impl2 但是要使用哪些确切类型的操作实例和参数?

【问题讨论】:

  • 你可以试试common Math for Java。

标签: java scala apache-spark apache-spark-mllib scala-breeze


【解决方案1】:

说实话,这很难。 Breeze 大量使用了隐式,它们只是不能很好地翻译成 Java。我们有一些 Java 友好的信号处理包装器,但没有用于线性代数。 (我很乐意接受为包装提供一些支持的拉取请求。)

【讨论】:

  • 好的,感谢您的提议,但是对于许多潜在的矩阵运算,我们多久会遇到此类问题?这真的可行吗?这可以处理几乎消耗整个 RAM 的矩阵吗?在 MLlib 上使用 Java 时,转换(并且可能在之前保留)MLlib 矩阵并将其加载到更可从 Java 使用的矩阵库中,如 commons-math 或并行 colt 将是要走的路吗?
【解决方案2】:

查看https://spark.apache.org/docs/2.2.0/api/java/org/apache/spark/mllib/linalg/BLAS.html,其中包含许多 BLAS 线性代数运算。 Scala 和 Java 都可以使用这些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-17
    • 2014-10-27
    • 2018-10-10
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2017-11-19
    相关资源
    最近更新 更多