Próbuję zastosować implementację gradientowego spadku w Scali i bryzie na podstawie Octave z: Implementacja gradientowego zejścia w oktawie
Kod oktawy, który próbuję przepisać, to:
theta = theta -((1/m) * ((X * theta) - y)" * X)" * alpha;
Wcześniej wymyśliłem:
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)
ale otrzymuję błąd czasu kompilacji:
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.
Czy poprawnie zaimplementowałem gradientowe pochodzenie za pomocą Scali i Breeze?
Wygląda na to, że muszę podać domyślny -
operator?
Odpowiedzi:
-1 dla odpowiedzi nr 1 val myvalue = (mymatrix - ((1 / m) * (( (xv * mymatrix - yv).t * xv).t * .0001)
xv
jest Vector i mymatrix
jest Matryca który jest nieobsługiwane. to jest błąd, z którym się spotykasz