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 сможет сделать часть тяжелой работы. С другой стороны, модели с ограничениями параметров, насколько я видел, гораздо менее распространены, и вы можете уйти, просто оставив их пока нереализованными.