Tensorflow获取范围中的所有gradient_and_variable对

时间:2017-08-02 06:56:01

标签: tensorflow

我正在实施paper,并且要求被抽象如下。我有一个CNN,它有多个层,每个层都是作用域。由于本文需要两个示例,我使用opt.compute_gradients(loss)tf.get_variable_scope().reuse_variables()来获取[grad_and_vars1, grad_and_vars2](其中grad_and_vars表示渐变和变量对,1代表第一个示例)。

如何获得相应变量属于所需范围的梯度和变量对?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以通过关键字参数var_list将变量列表传递给compute_gradients。您还可以查看tf.trainable_variables()tf.contrib.framework.filter_variables()

以下是计算两个不同范围的渐变的示例:

all_variables = tf.trainable_variables()
scope1_variables = tf.contrib.framework.filter_variables(all_variables, include_patterns=['name_of_scope1'])
scope2_variables = tf.contrib.framework.filter_variables(all_variables, include_patterns=['name_of_scope2'])
opt = tf.train.MomentumOptimizer(lr, momentum)
grad_and_vars1 = opt.compute_gradients(loss, var_list=scope1_variables)
grad_and_vars2 = opt.compute_gradients(loss, var_list=scope2_variables)