Is there a way to find all variables that a given operation (usually a loss) depends upon?
I would like to use this to then pass this collection into optimizer.minimize()
or tf.gradients()
using various set().intersection()
combinations.
So far I have found op.op.inputs
and tried a simple BFS on that, but I never chance upon Variable
objects as returned by tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)
or slim.get_variables()
There does seem to be a correspondence between corresponding 'Tensor.op._idand
Variables.op._id` fields, but I'm not sure that's a something I should rely upon.
Or maybe I should't want to do this in the first place? I could of course construct my disjoint sets of variables meticulously while building my graph, but then it would be easy to miss something if I change the model.