[tf]使用contrib中的函数进行l2正则化,以及colleciton机制进行数据的批量正则化

  • 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'))

你可能感兴趣的:([tf]使用contrib中的函数进行l2正则化,以及colleciton机制进行数据的批量正则化)