Implementation:Tensorflow Tfjs Initializers Test
| Knowledge Sources | |
|---|---|
| Domains | Testing, Layers_API |
| Last Updated | 2026-02-10 06:00 GMT |
Overview
This test suite validates all weight initializer implementations in TensorFlow.js Layers. Initializers are responsible for setting the initial values of layer weights before training. The suite tests deterministic initializers (Zeros, Ones, Constant, Identity), random initializers (RandomUniform, RandomNormal, TruncatedNormal), variance-scaled initializers (GlorotUniform, GlorotNormal, HeNormal, HeUniform, LecunNormal, LecunUniform), and the Orthogonal initializer. Tests verify output shapes, dtypes, value ranges, statistical properties, serialization round-trips, and memory safety.
Code Reference
Source Location: tfjs-layers/src/initializers_test.ts (851 lines)
Repository: GitHub
Test Describe Blocks
Zeros initializer- All-zeros initialization (1D, 2D, case-insensitive naming)Ones initializer- All-ones initializationConstant initializer- Constant value initialization from config dict and builderIdentity initializer- Identity matrix initializationRandomUniform initializer- Uniform random values within rangeRandomNormal initializer- Normal distribution random valuesHeNormal initializer- He normal variance scalingHeUniform initializer- He uniform variance scalingLecunNormal initializer- Lecun normal variance scalingLeCunUniform initializer- Lecun uniform variance scalingTruncatedNormal initializer- Truncated normal distributionGlorot uniform initializer- Xavier/Glorot uniformVarianceScaling initializer- General variance scaling with configurable fan mode and distributionGlorot normal initializer- Xavier/Glorot normalinitializers.get- Initializer lookup by string nameInvalid initializer identifier- Error handling for unknown initializerscheckFanMode- Validation of fan mode values (fanIn, fanOut, fanAvg)checkDistribution- Validation of distribution values (normal, uniform, truncatedNormal)Orthogonal Initializer- Orthogonal matrix initialization
I/O Contract
Inputs to tests:
- Shape arrays (e.g.,
[3],[2, 2],[4, 6]) - Data types (
float32) - Initializer configuration dicts and string identifiers
- Seed values for reproducible random initializations
Expected outputs/assertions:
- Output tensors have correct shape and dtype
- Deterministic initializers produce exact values (all zeros, all ones, constant, identity)
- Random initializers produce values within expected statistical ranges (mean, stddev, min, max)
- Variance scaling respects fan-in/fan-out calculations
- Orthogonal initializer produces matrices with orthogonal columns
- Memory leak checks via
expectNoLeakedTensors
Usage Example
describeMathCPU('Zeros initializer', () => {
it('1D', () => {
const init = getInitializer('zeros');
const weights = init.apply([3], 'float32');
expect(weights.shape).toEqual([3]);
expect(weights.dtype).toEqual('float32');
expect(weights.dataSync()).toEqual(new Float32Array([0, 0, 0]));
});
it('Does not leak', () => {
expectNoLeakedTensors(() => getInitializer('zeros').apply([3]), 1);
});
});
Test Coverage Summary
| Category | Count | Details |
|---|---|---|
| Deterministic Initializers | 4 | Zeros, Ones, Constant, Identity |
| Random Initializers | 3 | RandomUniform, RandomNormal, TruncatedNormal |
| Variance Scaling | 7 | Glorot (uniform/normal), He (normal/uniform), Lecun (normal/uniform), general VarianceScaling |
| Orthogonal | 1 | Matrix orthogonality tests |
| Utility | 4 | get, checkFanMode, checkDistribution, invalid identifier |
| Memory Leak Tests | Per initializer | expectNoLeakedTensors
|
| Test Environment | CPU (mostly) | describeMathCPU, describeMathCPUAndWebGL2 for Orthogonal
|