2017-05-29 70 views
0

是否有一种很好的方式来区分TensorFlow中张量,变量和操作之间的编程方式?例如,当重新加载模型和tf.local_variables()可以同时具有张量和变量时,就会出现这种情况。如果你尝试初始化一个张量,你会得到一个错误。以编程方式区分TensorFlow中的张量,变量和Ops

下面是我目前的黑客来解决这个问题的一些代码,但有没有更好的方法?部分问题是,变量,张量等的类型是,例如,tensorflow.python.ops.variables.Variable,但似乎tensorflow.python不再可用(我认为它是在一些早期版本?)。这个例子只显示变量与张量,但我还需要区分ops和张量,并且必须使用类似的hacks。

import tensorflow as tf 
vars_list = [tf.Variable(0), tf.constant(0)] 
# init = tf.variables_initializer(vars_list) # -> AttributeError: 'Tensor' object has no attribute 'initializer' 
var_type = type(tf.Variable(0)) 
init = tf.variables_initializer([v for v in vars_list if type(v) == var_type]) 

回答

1

通常,在Python中,应当使用

isinstance(x, tf.Variable) 

isinstance(x, (tf.Variable, tf.Tensor))