tensorflow L2正則化實現以及差異性(tf.nn.l2_loss、tf.nn.l2_normalize、tf.contrib.layers.l2_regularizer)

import tensorflow as tf

from tensorflow.contrib import layers

a = tf.Variable([3.0, 4.0])
# 第一種正則化方法
aa = tf.nn.l2_normalize(a)  # a中每個元素除以(平方和開2次根號), 標準的l2範數, 得到是一個shape與輸入a相同的tensor
# 第二種正則化方法
a_l2_loss = tf.nn.l2_loss(a)  # a中每個元素平方和除以2, 是一個scalar
# 第三種正則化方法
# reg = layers.l2_regularizer(scale=4.0)  # 返回一個函數, 計算方式是:scalae * tf.nn.l2_loss(a)
reg = tf.contrib.layers.l2_regularizer(scale=4.0)
a_reg = reg(a)


with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(aa))
    print(sess.run(a_l2_loss))
    print(sess.run(a_reg))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章