如何*不*在TensorFlow中保存局部变量

时间:2017-05-29 20:29:02

标签: python tensorflow

我有一个使用TensorFlow AUC操作的模型。这会产生一些局部变量(真阳性,真阴性等)。尽管尝试在此模型中仅保存全局变量,但在加载模型时仍然会获得本地变量。这是一个问题,因为在恢复它们之后,它们是Tensors而不是变量。因此,尝试初始化局部变量会给我带来错误。

如何在没有任何局部变量的情况下在TensorFlow中保存模型?

这里有一些代码可以重现我的问题:

import tensorflow as tf

inputs = tf.random_normal([10, 1])
labels = tf.cast(tf.round(tf.random_uniform([10, 1])), tf.int32)
logits = tf.layers.dense(inputs, 1)
predictions = tf.sigmoid(logits)
auc_val, auc_op = tf.metrics.auc(labels, predictions)

sess = tf.Session()
sess.run([tf.global_variables_initializer()]) # or else tf complains when saving
print(tf.local_variables()) # shows 4 local *variables*
saver = tf.train.Saver(var_list=tf.global_variables()) # trying to save only globals
saver.save(sess, 'test.save')

tf.reset_default_graph() # clear old graph
saver = tf.train.import_meta_graph('test.save.meta')
saver.restore(sess, 'test.save')
print(tf.local_variables()) # contains 4 *tensors*
sess.run(tf.local_variables_initializer()) # throws an AttributeError: 'Tensor' object has no attribute 'initializer'

0 个答案:

没有答案