Как проверить, существует ли переменная в Tensorflow1.X? - PullRequest
0 голосов
/ 16 июня 2020

Как проверить, существует ли переменная в Tensorflow1.X?

У меня есть возможность проверить это в программировании, я долго гуглил, но до сих пор не получил ответа.

1 Ответ

0 голосов
/ 16 июня 2020

Если вы не передаете явное значение для 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
...