gpt4 book ai didi

python - 如何在 Keras/TensorFlow 的自定义层中应用内核正则化?

转载 作者:行者123 更新时间:2023-12-04 16:39:45 24 4
gpt4 key购买 nike

考虑以下来自 TensorFlow 教程的自定义层代码:

class MyDenseLayer(tf.keras.layers.Layer):
def __init__(self, num_outputs):
super(MyDenseLayer, self).__init__()
self.num_outputs = num_outputs

def build(self, input_shape):
self.kernel = self.add_weight("kernel",
shape=[int(input_shape[-1]),
self.num_outputs])

def call(self, input):
return tf.matmul(input, self.kernel)
如何对自定义层的参数应用任何预定义的正则化(比如 tf.keras.regularizers.L1 )或自定义正则化?

最佳答案

add_weight方法需要一个 regularizer您可以使用该参数对权重应用正则化。例如:

self.kernel = self.add_weight("kernel",
shape=[int(input_shape[-1]), self.num_outputs],
regularizer=tf.keras.regularizers.l1_l2())
或者,要像其他内置图层一样拥有更多控制权,您可以修改自定义图层的定义并添加 kernel_regularizer论据 __init__方法:
from tensorflow.keras import regularizers

class MyDenseLayer(tf.keras.layers.Layer):
def __init__(self, num_outputs, kernel_regularizer=None):
super(MyDenseLayer, self).__init__()
self.num_outputs = num_outputs
self.kernel_regularizer = regularizers.get(kernel_regularizer)

def build(self, input_shape):
self.kernel = self.add_weight("kernel",
shape=[int(input_shape[-1]), self.num_outputs],
regularizer=self.kernel_regularizer)
有了它,您甚至可以传递像 'l1' 这样的字符串。或 'l2'kernel_regularizer构造层时的参数,它将被正确解决。

关于python - 如何在 Keras/TensorFlow 的自定义层中应用内核正则化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63286750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com