---
# apply overrider hyperparameters across all layers
_overrider:
    weights: {}
    biases: {}
    prep_activation: {}
    activation: {}
    gradient: {}
    depthwise_weights: {}
    _overrider: &overrider
        weights: $(_overrider.weights)
        biases: $(_overrider.biases)
        activation: $(_overrider.activation)
        gradient: $(_overrider.gradient)
        depthwise_weights: $(_overrider.depthwise_weights)
    # interfaces
    prep: {activation: $(_overrider.prep_activation)}
    conv: {<<: *overrider}
    # TODO normalization layer overriding
    norm: {}
    fc: {<<: *overrider}
    logits: {weights: $(_overrider.weights)}
    # squeezenet
    squeeze: {<<: *overrider}
    expand1: {<<: *overrider}
    expand3: {<<: *overrider}
    # mobilenet
    depthwise:
        <<: *overrider
        depthwise_weights: $(_overrider.depthwise_weights)
    pointwise: {<<: *overrider}
