Keras W_constraint и аналоги W_regularizer в Julia's Flux

Я пытаюсь разобрать Keras json для создания Flux модель в Юлии (Keras v1.1.0 и Flux v0.10.4).

Пример Dense конфигурация слоя:

{
    "class_name": "Dense", 
    "config": {
        "W_constraint": null, 
        "b_constraint": null, 
        "name": "dense_1", 
        "output_dim": 512, 
        "activity_regularizer": null, 
        "trainable": true, 
        "init": "glorot_normal", 
        "bias": true, 
        "input_dtype": "float32", 
        "input_dim": 4096, 
        "b_regularizer": null, 
        "W_regularizer": {
            "l2": 0.0010000000474974513, 
            "name": "WeightRegularizer", 
            "l1": 0.0
        }, 
        "activation": "relu", 
        "batch_input_shape": [null, 4096]
    }
}

Итак, мне ясно, как определить размеры ввода / вывода, функцию активации и инициализацию параметров в Flux. Но что насчетW_constraint а также W_regularizer? Я не нашел ничего похожего вFluxс Denseслой. Он существует? Стоит ли самому реализовать? Эти параметрыDense слой даже важен, или его можно легко пропустить при создании Flux модель без резкого изменения производительности?

1 ответ

Решение

Значения регуляризации - это нормы, которые суммируются для всех параметров сети и добавляются к функции потерь; это нужно делать "вручную", но это довольно просто и описано в документации.

Ограничения параметров в Keras, по- видимому, реализуются с помощью методов проекции, которые являются частью оптимизатора. Это менее тривиально реализовать, я предлагаю прочитать немного о методах проксимального градиента. Вероятно, вам придется реализовать свой собственный тип оптимизации, сделав это в Flux (в идеале, обернуть один из существующих). Возможно, ProximalOperators.jl сможет сделать часть тяжелой работы. С другой стороны, модели с ограничениями параметров, насколько я видел, гораздо менее распространены, и вы можете уйти, просто оставив их пока нереализованными.

Другие вопросы по тегам