Initialize trainable kernels
Choosing a standard starting distribution for dense or convolutional weights.
Keras · Module
keras.initializers provides built-in and custom strategies for creating initial layer-weight tensors. Use initializer objects or supported string names through layer-specific arguments such as kernel_initializer and bias_initializer.
The module provides callable strategies that create tensors for layer weights. Built-in classes cover common distributions, scaling rules, constant values, zeros, ones, identity matrices, and orthogonal matrices; layers receive them through initializer arguments or accepted string aliases.
keras.initializers.Initializer()
keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=None)
keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None)
keras.initializers.TruncatedNormal(mean=0.0, stddev=0.05, seed=None)
keras.initializers.Zeros()
keras.initializers.Ones()
keras.initializers.Constant(value=0.0)
keras.initializers.Identity(gain=1.0)
keras.initializers.Orthogonal(gain=1.0, seed=None)
def __call__(self, shape, dtype=None):__call__(self, shape, dtype=None).Initializer class.import keras
from keras import layers
model = keras.Sequential([
layers.Dense(
64,
kernel_initializer=keras.initializers.HeUniform(seed=42),
bias_initializer=keras.initializers.Zeros(),
input_shape=(32,),
),
layers.Dense(10, activation="softmax"),
])This runnable example gives the first Dense layer explicit kernel and bias initialization strategies.
Choosing a standard starting distribution for dense or convolutional weights.
Setting bias variables to a predictable baseline.
Controlling repeatability when constructing models.
Implementing project-specific weight creation logic.
An initializer is a callable used to produce the initial tensor for a layer variable. Its usual call contract accepts shape and optional dtype, then returns a tensor with that shape and dtype.
Follow-up: How would you make a configurable custom initializer? Implement keras.initializers.Initializer, accept configuration in the constructor, and implement __call__(shape, dtype=None).
Initializers can be passed to layer arguments such as kernel_initializer and bias_initializer. Keras also supports string names for built-in initializers, such as "random_normal" or "zeros".
Follow-up: Why might an object be preferable to a string? It lets you set initializer-specific arguments, such as a distribution's standard deviation or a random seed.
The module includes distribution-based initializers, scaling-based initializers, constant-valued initializers, and matrix-structure initializers. Examples include RandomNormal, VarianceScaling, Zeros, Identity, and Orthogonal.
Follow-up: Which initializer families are unsuitable for every shape? Identity requires a two-dimensional matrix, while other choices may impose their own shape or parameter constraints.
keras.initializers.Initializerkeras.initializers.RandomNormalkeras.initializers.RandomUniformkeras.initializers.TruncatedNormalkeras.initializers.VarianceScalingkeras.initializers.GlorotNormalkeras.initializers.GlorotUniformkeras.initializers.HeNormal