main function
void
main()
Implementation
void main() {
print('========================================');
print(' LAYER SPEED BENCHMARK (CPU ONLY) ');
print('========================================\n');
int iterations = 50;
// 1. AveragePooling2DLayer
AveragePooling2DLayer avgPool = AveragePooling2DLayer(poolSize: 2, stride: 2);
Tensor<Matrix> poolInput = generateMatrix(128, 128);
runBenchmark<Matrix, Matrix>('AveragePooling2D (128x128)', avgPool, poolInput, iterations);
// 2. BatchNorm1D
BatchNorm1D bn1d = BatchNorm1D(1024);
Tensor<Vector> bn1dInput = generateVector(1024);
runBenchmark<Vector, Vector>('BatchNorm1D (1024 features)', bn1d, bn1dInput, iterations);
// 3. BatchNorm2D
BatchNorm2D bn2d = BatchNorm2D(16);
Tensor<Tensor3D> bn2dInput = generateTensor3D(16, 64, 64);
runBenchmark<Tensor3D, Tensor3D>('BatchNorm2D (16 channels, 64x64)', bn2d, bn2dInput, iterations);
// 4. Conv2DLayer
Conv2DLayer conv2d = Conv2DLayer(16, 3, padding: 'same');
Tensor<Matrix> convInput = generateMatrix(64, 64);
// Setting showGraph: true here to visualize the convolution bottleneck
runBenchmark<Matrix, Tensor3D>('Conv2D (16 filters, 3x3, 64x64 in)', conv2d, convInput, iterations, showGraph: true);
// 5. ConvLSTMLayer
ConvLSTMLayer convLstm = ConvLSTMLayer(16, 3);
Tensor<Tensor3D> convLstmInput = generateTensor3D(10, 32, 32);
runBenchmark<Tensor3D, Matrix>('ConvLSTM (Seq:10, 16 filters, 3x3, 32x32 in)', convLstm, convLstmInput, iterations);
print('========================================');
print(' BENCHMARK COMPLETE ');
print('========================================');
}