Initializers
RecIS provides multiple parameter initializers:
TruncNormalInitializer
- class recis.nn.initializers.TruncNormalInitializer(mean: float = 0.0, std: float = 1.0, a: float = -2.0, b: float = 2.0, generator: Generator = None)[source]
Truncated normal distribution initializer.
Initializes parameters by sampling from a truncated normal distribution. This is similar to normal initialization but with values outside the specified range [a, b] resampled to ensure all values fall within bounds. This can be useful when you want normally distributed values but need to avoid extreme outliers.
- Parameters:
mean (float, optional) – Mean of the normal distribution. Defaults to 0.0.
std (float, optional) – Standard deviation of the normal distribution. Defaults to 1.0.
a (float, optional) – Lower truncation bound in units of standard deviations from the mean. Defaults to -2.0.
b (float, optional) – Upper truncation bound in units of standard deviations from the mean. Defaults to 2.0.
generator (torch.Generator, optional) – Random number generator for reproducible initialization. Defaults to None.
Example
>>> # Truncated normal with small std and tight bounds >>> initializer = TruncNormalInitializer(mean=0.0, std=0.02, a=-2.0, b=2.0) >>> initializer.set_shape([512, 256]) >>> initializer.build() >>> tensor = initializer.generate() # Values in [-0.04, 0.04]
ConstantInitializer
- class recis.nn.initializers.ConstantInitializer(init_val: float = 0.0, dtype: dtype = torch.float32)[source]
Constant value initializer.
Initializes all parameters with the same constant value. This is useful for bias initialization or when you want all parameters to start with the same value.
- Parameters:
init_val (float, optional) – The constant value to initialize parameters. Defaults to 0.0.
dtype (float, torch.dtype) – The value type to initialize parameters. Defaults to torch.float32.
Example
>>> # Initialize all parameters to 0.1 >>> initializer = ConstantInitializer(init_val=0.1) >>> initializer.set_shape([10, 5]) >>> initializer.build() >>> tensor = initializer.generate() # All values will be 0.1
UniformInitializer
- class recis.nn.initializers.UniformInitializer(a: float = 0.0, b: float = 1.0, generator: Generator = None)[source]
Uniform distribution initializer.
Initializes parameters by sampling from a uniform distribution over the interval [a, b). This provides a simple way to initialize parameters with values spread evenly across a specified range.
- Parameters:
a (float, optional) – Lower bound of the uniform distribution (inclusive). Defaults to 0.0.
b (float, optional) – Upper bound of the uniform distribution (exclusive). Defaults to 1.0.
generator (torch.Generator, optional) – Random number generator for reproducible initialization. Defaults to None.
Example
>>> # Initialize parameters uniformly between -0.1 and 0.1 >>> initializer = UniformInitializer(a=-0.1, b=0.1) >>> initializer.set_shape([100, 50]) >>> initializer.build() >>> tensor = initializer.generate()
NormalInitializer
- class recis.nn.initializers.NormalInitializer(mean: float = 0.0, std: float = 1.0, generator: Generator = None)[source]
Normal (Gaussian) distribution initializer.
Initializes parameters by sampling from a normal distribution with specified mean and standard deviation. This is one of the most common initialization strategies for neural networks.
- Parameters:
mean (float, optional) – Mean of the normal distribution. Defaults to 0.0.
std (float, optional) – Standard deviation of the normal distribution. Defaults to 1.0.
generator (torch.Generator, optional) – Random number generator for reproducible initialization. Defaults to None.
Example
>>> # Initialize with small random values around zero >>> initializer = NormalInitializer(mean=0.0, std=0.01) >>> initializer.set_shape([784, 128]) >>> initializer.build() >>> tensor = initializer.generate()