forward method

Tensor forward(
  1. Tensor input
)

Forward pass.

Implementation

Tensor forward(Tensor input) {
  // Normalize over the last dimension
  final batchSize = input.size ~/ normalizedShape;
  final result = Float32List(input.size);

  for (int b = 0; b < batchSize; b++) {
    final offset = b * normalizedShape;

    // Compute mean
    double mean = 0.0;
    for (int i = 0; i < normalizedShape; i++) {
      mean += input.data[offset + i];
    }
    mean /= normalizedShape;

    // Compute variance
    double variance = 0.0;
    for (int i = 0; i < normalizedShape; i++) {
      final diff = input.data[offset + i] - mean;
      variance += diff * diff;
    }
    variance /= normalizedShape;

    // Normalize and apply affine
    final invStd = 1.0 / math.sqrt(variance + eps);
    for (int i = 0; i < normalizedShape; i++) {
      result[offset + i] =
          ((input.data[offset + i] - mean) * invStd) * weight.data[i] +
              bias.data[i];
    }
  }

  return Tensor(result, List<int>.from(input.shape));
}