方法有幾種,總結一下方便后面使用。
1. tensorflow自動維護一個tf.GraphKeys.WEIGHTS集合,手動在集合里面添加(tf.add_to_collection())想要進行正則化懲罰的變量。
然后創建 regularizer = tf.contrib.layers.l2_regularizer(REGULARIZATION_RATE),
再應用函數 regularization_loss = tf.contrib.layers.apply_regularization(regularizer=regurializer) 即可得到對集合tf.GraphKeys.WEIGHTS內的變量的正則化項。
2. 先創建 regularizer = tf.contrib.layers.l2_regularizer(REGULARIZATION_RATE),
創建變量時指定regularizer,如 w1 = tf.get_variable('w1', [100, 100], regularizer=regularizer),tensorflow會將變量加入集合 tf.GraphKeys.REGULARIZATOIN_LOSSES,
然后設置正則化系數 REGULARIZATION_RATE,通過獲取上述的集合即可得到正則化損失
regularization_loss = REGULARIZATION * sum(
tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES))。