【发布时间】:2021-04-06 12:28:48
【问题描述】:
我正在寻找一种适当的方法来在训练期间为层实现权重的动态正则化。作为 10 次调用后的示例,我想仅针对 MyLayer 的特定权重将 L2 正则化替换为 L1 正则化。下面展示了一个layer实现的例子:
class MyLayer(tf.keras.layers.Layer):
def __init__(...)
some code
def build(self, input_shape):
self.regularizer = tf.keras.regularizers.L2() # this regularization should be changed after some steps
self.my_weights = self.add_weight(name='myweights', shape=(self.input_dim, ),
initializer=tf.keras.initializers.Constant(1,),
regularizer= self.regularizer, trainable=True)
self.counter = tf.Variable(0, dtype=tf.int32)
...
def call(self, inputs):
... do some processing ...
# for the following code i look for a proper implementation
if self.counter > 10:
self.regularizer = tf.keras.regularizers.L1()
tf.keras.backend.update(self.counter,self.counter+1)
【问题讨论】:
标签: python tensorflow keras tf.keras