Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 如何在tf.get_变量中使用正则化器参数?_Tensorflow - Fatal编程技术网

Tensorflow 如何在tf.get_变量中使用正则化器参数?

Tensorflow 如何在tf.get_变量中使用正则化器参数?,tensorflow,Tensorflow,用法的语法很清楚: decay = tf.constant(0.001, dtype=tf.float32) w = tf.get_variable(name='weight', shape=[512, 512], regularizer=tf.contrib.layers.l2_regularizer(decay)) 但是,文件中仅说明了以下内容: 正则化器:一个(张量->张量或无)函数;将其应用于新创建变量的结果将添加到集合tf.GraphKeys.

用法的语法很清楚:

decay = tf.constant(0.001, dtype=tf.float32)
w = tf.get_variable(name='weight', shape=[512, 512],
                    regularizer=tf.contrib.layers.l2_regularizer(decay))
但是,文件中仅说明了以下内容:

正则化器
:一个(张量->张量或无)函数;将其应用于新创建变量的结果将添加到集合
tf.GraphKeys.regulation\u loss
,并可用于正则化

上述情况并不意味着正则化损失自动最小化。那么,我们是否需要从集合
tf.GraphKeys.REGULARIZATION\u loss
中手动获取变量,并将其添加到我们的主损失中,以便应用它

那么,我们是否需要从集合tf.GraphKeys.REGULARIZATION_loss中手动获取变量,并将其添加到我们的主损失中,以便应用它

是和否:您需要通过手动获取正则化损失(这将已经获取集合中定义的所有正则化损失,无需搜索其中的变量),然后您只需将正则化损失添加到模型的损失中,并将其用作优化器训练的损失:

logits = model_fn(inputs)
model_loss = your_chosen_loss_function(logits)
regularization_loss = tf.losses.get_regularization_loss()
your_chosen_optimizer.minimize(model_loss + regularization_loss)

更正:
get\u regulation\u loss
返回损失列表;你不能直接把它加到你的损失中。相反,
get\u regulation\u loss
返回一个张量,该张量是所有正则化损失的总和。这个可以直接使用。啊哈!很好的捕获@xdurch0,我忽略了单数和复数版本!我马上修改答案,谢谢!