我有两个命名范围用于CNN的单独子图(使用tf.variable_scope).我可以将两个范围合并为一个,以便我的优化器仅更新两个范围中的变量吗?
Jac*_*way 13
根据tf.Optmizer文档,该函数minimize可以采用var_list(这些vars引用图中的学习变量权重).所以使用它你只需要从图中获得一个变量列表(如[w1,b1]的简单MLP).
如果您使用tf.variable_scope命名它们,则应该能够使用tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLESscope="my_scope_name"),如tf.get_collection文档中所述.如果你有两个可变范围,你应该能够获得与+运算符的组合列表,因为调用返回一个python列表.
所以,结合这两个想法,我相信你可以这样做:
loss = ...
vars_to_minimize = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='var_scope_name_1') +
tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='var_scope_name_2')
minimize_op = tf.Optimizer().minimize(loss, var_list=vars_to_minimize)
Run Code Online (Sandbox Code Playgroud)
注意:有关在get_collection调用中使用的可用键的更多详细信息,请参阅GraphKeys文档.
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |