Если вы не передаете явное значение для collections
в tf.Variable
/ tf.get_variable
, вы сможете найти все переменные в GLOBAL_VARIABLES
collection:
import tensorflow as tf
with tf.Graph().as_default():
tf.Variable([1, 2, 3], name='my_var')
print('my_var' in {v.op.name for v in tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)})
# True
В более общем плане вы можете найти операцию с именем переменной, которую вы ищете, и проверить, действительно ли тип операции является переменной:
import tensorflow as tf
def variable_exists(var_name, graph=None):
if graph is None:
graph = tf.get_default_graph()
try:
op = graph.get_operation_by_name(var_name)
except KeyError:
return False
return op.type in {'Variable', 'VariableV2', 'AutoReloadVariable', 'VarHandleOp'}
with tf.Graph().as_default():
tf.Variable([1, 2, 3], name='my_var')
print(variable_exists('my_var'))
# True
print(variable_exists('my_var2'))
# False