如何在Android/IOS中使用tf.train.ExponentialMovingAverage

如何在Android/IOS中使用tf.train.ExponentialMovingAverage,android,python,tensorflow,tensorflow-serving,tensorflow-gpu,Android,Python,Tensorflow,Tensorflow Serving,Tensorflow Gpu,我使用freeze\u graph将模型导出到名为“freezed.pb”的文件中。但是发现freezed.pb上的预测精度非常差 我知道问题可能是MovingAverage未包含在freezed.pb中 当我使用model.ckpt文件恢复模型进行评估时,如果我调用tf.train.ExponentialMovingAverage(0.999),则精度与预期一样好,否则精度就不好 那么,如何导出性能与从检查点文件恢复的二进制模型相同的二进制模型呢?我想在Android设备中使用“.pb”文件

我使用
freeze\u graph
将模型导出到名为
“freezed.pb”
的文件中。但是发现
freezed.pb
上的预测精度非常差

我知道问题可能是
MovingAverage
未包含在
freezed.pb

当我使用
model.ckpt
文件恢复模型进行评估时,如果我调用
tf.train.ExponentialMovingAverage(0.999)
,则精度与预期一样好,否则精度就不好

那么,如何导出性能与从检查点文件恢复的二进制模型相同的二进制模型呢?我想在Android设备中使用
“.pb”
文件

没有提到这个

谢谢

冻结命令:

~/bazel-bin/tensorflow/python/tools/freeze_graph \
  --input_graph=./graph.pbtxt \
  --input_checkpoint=./model.ckpt-100000 \
  --output_graph=frozen.pb \
  --output_node_names=output  \
  --restore_op_name=save/restore_all \
  --clear_devices
评估代码:

... ...
logits = carc19.inference(images)
top_k = tf.nn.top_k(logits, k=10)

# Precision: 97%
# Restore the moving average version of the learned variables for eval.
variable_averages = tf.train.ExponentialMovingAverage(carc19.MOVING_AVERAGE_DECAY)
variables_to_restore = variable_averages.variables_to_restore()
for k in variables_to_restore.keys():
  print (k,variables_to_restore[k])
saver = tf.train.Saver(variables_to_restore)

# Precision: 84%
#saver = tf.train.Saver()

#model_path = '/tmp/carc19_train/model.ckpt-9801'
with tf.Session() as sess:
  saver.restore(sess, model_path)
... ...
github也有同样的问题