【问题标题】:Multiplying matrices using ScalaNLP and Breeze使用 ScalaNLP 和 Breeze 将矩阵相乘
【发布时间】:2015-11-13 01:41:01
【问题描述】:

在下面的方法中,我尝试将 DenseVector 乘以 DenseVector,其中 DenseVector 之一是方法参数:

   def mult(features : DenseVector[Array[Int]]) = {

     val dv = new DenseVector(Array(-30, 20 , 20))

     features :* dv

   }

这会导致编译器错误:

Multiple markers at this line:
◾could not find implicit value for parameter op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That]
◾not enough arguments for method :*: (implicit op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That])That. Unspecified value parameter op.
◾could not find implicit value for parameter op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That]
◾not enough arguments for method :*: (implicit op: breeze.linalg.operators.OpMulScalar.Impl2[breeze.linalg.DenseVector[Array[Int]],breeze.linalg.DenseVector[Int],That])That. Unspecified value parameter op.

这段代码编译:

def mult(features : breeze.linalg.DenseVector[Array[Int]]) = {

     val dv1 = new breeze.linalg.DenseVector(Array(-30, 20 , 20))
     val dv2 = new breeze.linalg.DenseVector(Array(-30, 20 , 20))

     dv1 :* dv2 

   }

如何将features 参数与dv 相乘?我不确定编译器错误的含义,与我没有在方法中指定 DenseVector 的大小有关吗?

【问题讨论】:

    标签: scala scala-breeze scala-nlp


    【解决方案1】:

    我怀疑你的方法签名是错误的。

    试试看

    def mult(features : DenseVector[Int])
    

    而不是

    def mult(features : DenseVector[Array[Int]]).
    

    在您的情况下,您有一个向量,其中每个条目的类型都是 Array[Int]。

    【讨论】:

      猜你喜欢
      • 2022-06-30
      • 1970-01-01
      • 2013-09-23
      • 2020-07-18
      • 2015-01-24
      • 2016-12-11
      • 1970-01-01
      • 2012-12-27
      相关资源
      最近更新 更多