2017-05-29 5 views
0

TensorFlowでテンソル、変数、およびopsをプログラム的に区別する良い方法はありますか?たとえば、モデルをリロードするときに、tf.local_variables()にテンソルと変数の両方を含めることができます。テンソルを初期化しようとすると、エラーが発生します。TensorFlowでテンソル、変数、およびOpsをプログラムで区別する

以下は私の現在のハックのコードですが、もっと良い方法がありますか?問題の一部は、変数、テンソルなどのタイプがたとえばtensorflow.python.ops.variables.Variableであることですが、tensorflow.pythonにアクセスできなくなっているようです(これは以前のリリースのものでしたか?)。この例では変数対テンソルしか示されていませんが、以前は関数とテンソルを区別する必要があり、同様のハックを使用しなければなりませんでした。

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)) 

関連する問題