forward method
Implementation
Matrix2d forward(Matrix2d input) {
if (padding > 0) {
input = input.pad(padding);
}
int outputRows = ((input.rows() - kernelSize) ~/ stride) + 1;
int outputCols = ((input.cols() - kernelSize) ~/ stride) + 1;
Matrix2d output = Matrix2d(outputRows, outputCols);
for (int filterIdx = 0; filterIdx < outChannels; filterIdx++) {
Matrix2d kernel = kernels[filterIdx];
Value bias = biases.values[filterIdx];
for (int i = 0; i < outputRows; i++) {
for (int j = 0; j < outputCols; j++) {
Value sum = Value(0);
for (int ki = 0; ki < kernelSize; ki++) {
for (int kj = 0; kj < kernelSize; kj++) {
int row = i * stride + ki;
int col = j * stride + kj;
sum += input.at(row, col) * kernel.at(ki, kj);
}
}
sum += bias;
output.data!.values[i * outputCols + j] = sum;
}
}
}
return output;
}