LRP(
  ChainTuple(
    Conv((3, 3), 3 => 64, relu, pad=1)    => FlatRule(),
    MaxPool((2, 2))                       => ZeroRule(),
    Conv((3, 3), 64 => 128, relu, pad=1)  => ZPlusRule(),
    MaxPool((2, 2))                       => ZeroRule(),
    Conv((3, 3), 128 => 256, relu, pad=1) => ZPlusRule(),
    Conv((3, 3), 256 => 256, relu, pad=1) => ZPlusRule(),
    MaxPool((2, 2))                       => ZeroRule(),
    Conv((3, 3), 256 => 512, relu, pad=1) => ZPlusRule(),
    Conv((3, 3), 512 => 512, relu, pad=1) => ZPlusRule(),
    MaxPool((2, 2))                       => ZeroRule(),
    Conv((3, 3), 512 => 512, relu, pad=1) => ZPlusRule(),
    Conv((3, 3), 512 => 512, relu, pad=1) => ZPlusRule(),
    MaxPool((2, 2))                       => ZeroRule(),
  ),
  ChainTuple(
    MLUtils.flatten            => PassRule(),
    Dense(25088 => 4096, relu) => EpsilonRule{Float32}(1.0f-6),
    Dropout(0.5, active=false) => PassRule(),
    Dense(4096 => 4096, relu)  => EpsilonRule{Float32}(1.0f-6),
    Dropout(0.5, active=false) => PassRule(),
    Dense(4096 => 1000)        => EpsilonRule{Float32}(1.0f-5),
  ),
)