在上一篇关于MDM模型的文章中,作者给出的是基于TensorFlow的实现。由于一些原因,需要将在TF上训练好的模型转换为Caffe,经过一番简化,现在的要需求是只要将TF保存在checkpoint中的变量值输出到txt或npy中即可。这里列了几种简单的可行的方法.
1,最简单的方法,是在有model 的情况下,直接用tf.train.saver进行restore,就像 cifar10_eval.py 中那样。然后,在sess中直接run变量的名字就可以得到变量保存的值。
在这里以cifar10_eval.py为例。首先,在Graph中穿件model。
with tf.Graph().as_default() as g:
images, labels = cifar10.inputs(eval_data=eval_data)
logits = cifar10.inference(images)
top_k_op = tf.nn.in_top_k(logits, labels, 1)
然后,
通过tf.train.ExponentialMovingAverage.variable_to_restore确定需要restore的变量,默认情况下是model中所有trainable变量的movingaverge名字。并建立saver 对象
variable_averages = tf.train.ExponentialMovingAverage(
cifar10.MOVING_AVERAGE_DECAY)
variables_to_restore = variable_averages.variables_to_restore()
saver = tf.train.Saver(variables_to_restore)
variables_to_restore中是变量的movingaverage名字到变量的mapping(就是个字典)。我们可以打印尝试打印里面的变量名,
for name in variables_to_restore:
print(name)
输出结果为