【发布时间】:2018-05-16 15:14:18
【问题描述】:
我正在尝试实现自定义损失函数 (DL4J),遵循以下代码示例:https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/misc/lossfunctions/CustomLossL1L2.java。
我需要扩展 ILossFunction 并重写一些方法。
问题:
该函数正在返回org.nd4j.linalg.primitives.Pair<Double, INDArray>。
我试过了:
override def computeGradientAndScore(
labels: INDArray,
preOutput: INDArray,
activationFn: IActivation,
mask: INDArray,
average: Boolean
): Pair[Double, INDArray] = {
Pair.makePair(
computeScore(labels, preOutput, activationFn, mask, average),
computeGradient(labels, preOutput, activationFn, mask)
)
}
并得到以下编译错误:
[info] Compiling 2 Scala sources to PATH
[error] PATH/CosineSimilarity.scala:78: overriding method computeGradientAndScore in trait ILossFunction of type (x$1: org.nd4j.linalg.api.ndarray.INDArray, x$2: org.nd4j.linalg.api.ndarray.INDArray, x$3: org.nd4j.linalg.activations.IActivation, x$4: org.nd4j.linalg.api.ndarray.INDArray, x$5: Boolean)org.nd4j.linalg.primitives.Pair[Double,org.nd4j.linalg.api.ndarray.INDArray];
[error] method computeGradientAndScore has incompatible type
[error] override def computeGradientAndScore(labels: INDArray, preOutput: INDArray, activationFn: IActivation, mask: INDArray, average: Boolean): Pair[Double, INDArray] = {
[error] ^
[error] one error found
[error] (root/compile:compileIncremental) Compilation failed
[error] Total time: 4 s, completed 16 mai 2018 16:45:48
问题: 我怎样才能覆盖这个方法?
【问题讨论】:
标签: java scala deeplearning4j