我有一个使用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'