model.add(kernel_regularizer=regularizers.l2(_lambda))在层中加入正则化的具体含义

看过很多资料,理论上神经网络正则化的正则化项是要加到main loss里面之后再进行反向传播的。但是tensorflow2.0在定义层的时候提供了如下接口:

kernel_regularizer=regularizers.l2/l1()

百思不得其解为什么可以在层中定义正则项。查阅了官方文档之后得知:

这个参数在计算loss之后会直接自动加载到main loss中,以便进行优化,这样的好处就是不需要在main loss定义处写大量的代码,在某种程度上增加了代码的易读性。

原文链接:
https://books.google.co.jp/books?id=HnetDwAAQBAJ&pg=PT425&lpg=PT425&dq=kernel_regularizer+will+pass+regularization+loss+to+the+main+training+loss&source=bl&ots=kOYxzFyOt3&sig=ACfU3U1E1plpL3k-oP_I51RWdQFxH5Ij2g&hl=zh-CN&sa=X&ved=2ahUKEwiWnOzeofLoAhXKdd4KHSNbAX0Q6AEwC3oECA0QNg#v=onepage&q=kernel_regularizer%20will%20pass%20regularization%20loss%20to%20the%20main%20training%20loss&f=false

你可能感兴趣的:(model.add(kernel_regularizer=regularizers.l2(_lambda))在层中加入正则化的具体含义)