[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'))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容