Conv2d constructor

Conv2d({
  1. required int inChannels,
  2. required int outChannels,
  3. required int kernelSize,
  4. int stride = 1,
  5. int padding = 0,
  6. bool useBias = true,
})

Implementation

Conv2d({
  required this.inChannels,
  required this.outChannels,
  required this.kernelSize,
  this.stride = 1,
  this.padding = 0,
  this.useBias = true,
}) {
  // Initialize kernels for each output channel with weights for each input channel
  kernels = List.generate(outChannels, (outIdx) {
    return List.generate(inChannels, (inIdx) {
      return Matrix2d(
        kernelSize,
        kernelSize,
        ValueVector(List.generate(kernelSize * kernelSize,
            (i) => Value(math.Random().nextDouble() * 0.1 - 0.05))),
      );
    });
  });

  // Initialize biases (if used)
  biases = ValueVector(List.generate(outChannels, (i) => Value(0)));
}