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