我正在尝试为Scala Breeze矩阵实现我自己的元素UFunc,以便该函数可以应用于矩阵的每个元素。使用Breeze.numerics包作为指南我尝试过:
object step extends UFunc with MappingUFunc {
implicit object stepImplDouble extends Impl[Double, Double] {
def apply(x: Double) = if (x >= 0.5) 1.0 else 0.0
}
看起来很简单,对吧?我试图使用如下函数:
val H: BDM[Double] = step((M(::,*) + bias).t)
即。将一个按元素的函数元素应用于矩阵,给出一个输出H.但是代码在编译时会出错:
Error:(60, 26) could not find implicit value for parameter impl: dev.elm.step.Impl[breeze.linalg.DenseMatrix[Double],VR]
case "step" => step((M(::, *) + bias).t)
Error:(60, 26) not enough arguments for method apply: (implicit impl: dev.elm.step.Impl[breeze.linalg.DenseMatrix[Double],VR])VR in trait UFunc.
Unspecified value parameter impl.
case "step" => step((M(::, *) + bias).t)
这与我在上一个问题中提出的错误非常相似。听起来它可能需要矩阵参数,但我认为这些都是在MappingUFunc特性中处理的。任何帮助赞赏!感谢
答案 0 :(得分:0)
因为这是一个对象,所以声明顺序很重要。 将它放在代码中比第一次调用更高,或者将其拉出到自己的文件中。