У меня есть фрагмент кода (не мой), который определяет необучаемую переменную, которая используется для определения другого свойства слоя, которое выглядит примерно так:
initial_weight_val = 1.0
w = my_layer.add_weight(name=layer.name + '/my_weight', shape=(),
initializer=tf.initializers.constant(initial_weight_val),
trainable=False)
# Use w to set another parameter of the layer.
my_layer.the_parameter = some_function(w)
Пожалуйста, не говорите мне что такое необучаемая переменная (конечно, я знаю, что это такое?), которая также обсуждается в Что такое определение необучаемого параметра? .
Однако, учитывая, что w
не изменится (я думаю), я не понимаю, почему кто-то определил бы такую переменную, а не просто использовал Python переменную initial_weight_val
напрямую, особенно при использовании TensorFlow 2.0 (это мой случай и единственный интересующий меня случай). Конечно, одна из возможностей может заключаться в том, что эта переменная может стать обучаемой, если нужно, чтобы она была обучаемой позже, но зачем вообще этого ожидать?
Можно ли безопасно использовать initial_weight_val
для определения the_parameter
, т.е. передать initial_weight_val
в some_function
вместо w
?
Я обеспокоен этой проблемой, потому что не могу сохранить модель с переменной, потому что я получаю ошибку «переменная не JSON сериализуемая» (Keras и TF такие глючные, кстати!), Поэтому я пытался понять эквивалентность пользовательских необучаемых переменных и Python переменных.