-
tf.contrib.layers.l2_regularizer(lambda)(w)
:其中Lambda是正则化的参数。 - 当然可以使用l1_regularizer进行L1的正则化。
-
tf.square(var)
:可以直接对变量所有数取平方。
loss = tf.reduce_mean ( tf.square( y_ - y) )+ tf.contrib.layers.l2_regularizer(lambda)(w)
如果参数过多的话一个一个的写很麻烦,我们可以使用collection的机制进行批量正则化。
-
tf.add_to_collection('setName',var)
:将变量加入到集合中。 -
tf.get_collection('setName')
:获得set里面的所有变量。 -
tf.add_n(varlist)
:将所有的变量加起来。
def get_weight(shape , lambda=0.0001):
var = tf.Variable(tf.random_normal( shape ), dtype = tf.float32)
tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(lambda)(var))
return var
mse_loss = tf.reduce_mean( tf.square(y_ - cur_layer))
tf.add_to_collection('losses', mse_loss)
loss = tf.add_n(tf.get_collection('losses'))
网友评论