Composite(
  GlobalTypeMap(  # all layers
    Conv                    => ZPlusRule(),
    ConvTranspose           => ZPlusRule(),
    CrossCor                => ZPlusRule(),
    Dense                   => EpsilonRule{Float32}(1.0f-6),
    Scale                   => EpsilonRule{Float32}(1.0f-6),
    LayerNorm               => LayerNormRule(),
    typeof(dropout)         => PassRule(),
    AlphaDropout            => PassRule(),
    Dropout                 => PassRule(),
    BatchNorm               => PassRule(),
    typeof(flatten)         => PassRule(),
    typeof(MLUtils.flatten) => PassRule(),
    typeof(identity)        => PassRule(),
 ),
  FirstLayerTypeMap(  # first layer
    Conv          => FlatRule(),
    ConvTranspose => FlatRule(),
    CrossCor      => FlatRule(),
 ),
)