Composite(
  GlobalRule: all layers => ZeroRule(),
  GlobalRule: all layers => PassRule(),
  GlobalTypeRule(  # on all layers
    Conv => AlphaBetaRule{Float32}(2.0f0, 1.0f0),
    Dense => EpsilonRule{Float32}(1.0f-6),
    Union{GlobalMaxPool, GlobalMeanPool, AdaptiveMaxPool, AdaptiveMeanPool, MaxPool, MeanPool} => EpsilonRule{Float32}(1.0f-6),
  ),
  FirstNTypeRule(  # on layers 1:7
    Conv => FlatRule(),
  ),
  LastNTypeRule(  # on last 3 layers
    Dense => EpsilonRule{Float32}(1.0f-7),
  ),
  RangeTypeRule(  # on layers 4:10
    Union{GlobalMaxPool, GlobalMeanPool, AdaptiveMaxPool, AdaptiveMeanPool, MaxPool, MeanPool} => EpsilonRule{Float32}(1.0f-5),
  ),
  LayerRule: layer 9 => AlphaBetaRule{Float32}(1.0f0, 0.0f0),
  FirstLayerRule: first layer => ZBoxRule{Float32}(-3.0f0, 3.0f0),
  RangeRule: layers 18:19 => ZeroRule(),
  LastLayerRule: last layer => PassRule(),
)
