Composite(
  GlobalMap( # all layers
    ZeroRule()
  ),
  GlobalMap( # all layers
    PassRule()
  ),
  GlobalTypeMap(  # all layers
    Conv             => AlphaBetaRule{Float32}(2.0f0, 1.0f0),
    ConvTranspose    => AlphaBetaRule{Float32}(2.0f0, 1.0f0),
    CrossCor         => AlphaBetaRule{Float32}(2.0f0, 1.0f0),
    Dense            => EpsilonRule{Float32}(1.0f-6),
    GlobalMaxPool    => EpsilonRule{Float32}(1.0f-6),
    GlobalMeanPool   => EpsilonRule{Float32}(1.0f-6),
    AdaptiveMaxPool  => EpsilonRule{Float32}(1.0f-6),
    AdaptiveMeanPool => EpsilonRule{Float32}(1.0f-6),
    MaxPool          => EpsilonRule{Float32}(1.0f-6),
    MeanPool         => EpsilonRule{Float32}(1.0f-6),
 ),
  FirstNTypeMap(  # layers 1:7
    Conv => FlatRule(),
 ),
  RangeTypeMap(  # layers 4:10
    GlobalMaxPool    => EpsilonRule{Float32}(1.0f-5),
    GlobalMeanPool   => EpsilonRule{Float32}(1.0f-5),
    AdaptiveMaxPool  => EpsilonRule{Float32}(1.0f-5),
    AdaptiveMeanPool => EpsilonRule{Float32}(1.0f-5),
    MaxPool          => EpsilonRule{Float32}(1.0f-5),
    MeanPool         => EpsilonRule{Float32}(1.0f-5),
 ),
  LayerMap( # layer 9
    AlphaBetaRule{Float32}(1.0f0, 0.0f0)
  ),
  FirstLayerMap( # first layer
    ZBoxRule{Float32}(-3.0f0, 3.0f0)
  ),
  RangeMap( # layers 18:19
    ZeroRule()
  ),
  LastLayerMap( # last layer
    PassRule()
  ),
)