binaryCrossEntropy function
Implementation
Tensor<Scalar> binaryCrossEntropy(Tensor<Scalar> prediction, Tensor<Scalar> target) {
double predVal = prediction.data[0];
double targetVal = target.data[0];
double outValue = -(targetVal * log(predVal) + (1.0 - targetVal) * log(1.0 - predVal));
Tensor<Scalar> out = Tensor<Scalar>(outValue);
out.creator = Node(
[prediction, target],
() {
prediction.grad[0] = prediction.grad[0] +
out.grad[0] * ((predVal - targetVal) / (predVal * (1.0 - predVal)));
},
opName: 'binaryCrossEntropy',
cost: 1,
);
return out;
}