2017-05-29 100 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))