Weight Initialization
Weight initialization strategies in ND4J — WeightInit enum, IWeightInit interface, and choosing the right initializer
Usage
In Layer Configuration
import org.nd4j.weightinit.WeightInit;
new DenseLayer.Builder()
.nIn(784).nOut(256)
.weightInit(WeightInit.RELU)
.activation(Activation.RELU)
.build()As a Global Default
new NeuralNetConfiguration.Builder()
.weightInit(WeightInit.XAVIER) // default for all layers
.list()
.layer(new DenseLayer.Builder()
.nIn(784).nOut(256)
.weightInit(WeightInit.RELU) // override for this layer
.build())
.build();With a Custom Distribution
The WeightInit Enum
Xavier Family (Glorot)
Initializer
Enum Value
Distribution
Notes
He Family (Kaiming)
Initializer
Enum Value
Distribution
Notes
LeCun Family
Initializer
Enum Value
Distribution
Notes
Variance Scaling
Initializer
Enum Value
Distribution
Simple Initializers
Initializer
Enum Value
Description
Special Initializers
Initializer
Enum Value
Description
Choosing the Right Initializer
Rules of Thumb
Activation Function
Recommended WeightInit
Why
What Happens with Bad Initialization
Using a Custom Distribution
Supplying Custom Weight Arrays
Custom IWeightInit
Bias Initialization
Initialization and Reproducibility
Quick Reference
Scenario
WeightInit
Activation
Last updated
Was this helpful?