mseMatrix function
Implementation
Tensor<Scalar> mseMatrix(Tensor<Matrix> predictions, Tensor<Matrix> targets) {
int numRows = predictions.value.length;
int numCols = predictions.value[0].length;
int N = numRows * numCols;
double sumSquaredError = 0.0;
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < numCols; j++) {
double error = predictions.value[i][j] - targets.value[i][j];
sumSquaredError += error * error;
}
}
Tensor<Scalar> out = Tensor<Scalar>(sumSquaredError / N);
out.creator = Node(
[predictions, targets],
() {
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < numCols; j++) {
predictions.grad[i][j] +=
out.grad *
2 *
(predictions.value[i][j] - targets.value[i][j]) /
N;
}
}
},
opName: 'mse_matrix', // <-- Renamed for clarity
cost: 3 * N,
);
return out;
}