forward method
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));
}