擅长:python、mysql、java
<p>我暂时还不清楚现有答案的几个方面,因此这里有一个循序渐进的指南:</p>
<ol>
<li><p>定义正则化器。这是可以设置正则化常数的地方,例如:</p>
<pre><code>regularizer = tf.contrib.layers.l2_regularizer(scale=0.1)
</code></pre></li>
<li><p>通过以下方式创建变量:</p>
<pre><code> weights = tf.get_variable(
name="weights",
regularizer=regularizer,
...
)
</code></pre>
<p>等价地,变量可以通过正则的<code>weights = tf.Variable(...)</code>构造函数创建,然后是<code>tf.add_to_collection(tf.GraphKeys.REGULARIZATION_LOSSES, weights)</code>。</p></li>
<li><p>定义一些<code>loss</code>项并添加正则化项:</p>
<pre><code>reg_variables = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
reg_term = tf.contrib.layers.apply_regularization(regularizer, reg_variables)
loss += reg_term
</code></pre>
<p>注意:看起来<code>tf.contrib.layers.apply_regularization</code>是作为<code>AddN</code>实现的,所以或多或少相当于<code>sum(reg_variables)</code>。</p></li>
</ol>