binaryCrossEntropyGPU<T> function
GPUTensor<Scalar>
binaryCrossEntropyGPU<T>(
- GPUTensor<
T> prediction, - GPUTensor<
T> target, - CommandBuffer tape
///////////////////////////////// Loss Functions (400-499) /// /////////////////////////////////
Implementation
GPUTensor<Scalar> binaryCrossEntropyGPU<T>(GPUTensor<T> prediction, GPUTensor<T> target, CommandBuffer tape) {
// Loss functions usually reduce the result to a single scalar
GPUTensor<Scalar> out = GPUTensor<Scalar>(0.0);
tape.putInt(OP_BCE_LOSS_FORWARD);
tape.putString(prediction.id);
tape.putString(target.id);
tape.putString(out.id);
out.creator = GPUNode(
[prediction, target],
(CommandBuffer bTape) {
bTape.putInt(OP_BCE_LOSS_BACKWARD);
// CORRECT ORDER to match C++ bindings
bTape.putString('${out.id}_grad'); // 1. Incoming grad (1.0)
bTape.putString(prediction.id); // 2. Prediction
bTape.putString(target.id); // 3. Target
bTape.putString('${prediction.id}_grad'); // 4. Destination for the gradient
},
opName: 'binaryCrossEntropyGPU',
cost: 1,
);
return out;
}