使用Scala和Breeze实现梯度下降 - 错误:找不到参数op的隐式值:

时间:2016-06-03 22:21:28

标签: scala breeze gradient-descent

我尝试在Scala中使用渐变下降实现,并根据Octave从Gradient Descent implementation in octave

开始

我尝试重写的八度代码是:

theta = theta -((1/m) * ((X * theta) - y)' * X)' * alpha;

我想出了:

  val xv =       DenseVector[Double](1.0, 1.0)  
  val yv =       DenseVector[Double](1.0, 1.0)  
  val mymatrix : DenseMatrix[Double] = DenseMatrix( (1.0,2.0) , (3.0,4.0) )

  val myvalue = (mymatrix - ((1 / m) * (( (xv * mymatrix - yv).t * xv).t * .0001)

但我收到编译时错误:

Multiple markers at this line:
◾could not find implicit value for parameter op: breeze.linalg.operators.OpSub.Impl2[breeze.linalg.DenseMatrix[Double],breeze.linalg.DenseVector[Double],That]
◾not enough arguments for method -: (implicit op: breeze.linalg.operators.OpSub.Impl2[breeze.linalg.DenseMatrix[Double],breeze.linalg.DenseVector[Double],That])That. Unspecified value parameter op.

我是否使用Scala和Breeze正确实现了梯度下降?

我似乎需要为-运算符提供隐式?

1 个答案:

答案 0 :(得分:-1)

    val myvalue = (mymatrix - ((1 / m) * (( (xv * mymatrix - yv).t * xv).t * .0001)

xv是Vector,mymatrix矩阵不支持。 这就是你遇到的错误