使用 ScalaNLP 和 Breeze 乘法矩阵
Multiplying matrices using ScalaNLP and Breeze
在下面的方法中,我试图将 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 的大小有关?
我怀疑你的方法签名有误。
试试
def mult(features : DenseVector[Int])
而不是
def mult(features : DenseVector[Array[Int]]).
在你的例子中,你有一个向量,其中每个条目都是 Array[Int] 类型。
在下面的方法中,我试图将 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 的大小有关?
我怀疑你的方法签名有误。
试试
def mult(features : DenseVector[Int])
而不是
def mult(features : DenseVector[Array[Int]]).
在你的例子中,你有一个向量,其中每个条目都是 Array[Int] 类型。