导出Tensorflow估算器时是否保存了变量?

时间:2019-06-22 10:18:08

标签: python tensorflow machine-learning tensorflow-estimator

导出估算器时是否保存了变量的值(例如批归一化moving_meanmoving_variance)? (例如,使用BestExporter)

这是目前我导出模型的方式:

best_exporter = tf.estimator.BestExporter(
        name=best_model_path,
        serving_input_receiver_fn=serving_input_receiver_fn,
        exports_to_keep=1)
exporter = [best_exporter]

train_spec = tf.estimator.TrainSpec(...)
eval_spec = tf.estimator.EvalSpec(...,
    exporters=exporter)

tf.estimator.train_and_evaluate(ben_classifier, train_spec, eval_spec)

在培训时,我将BatchNormalization的更新操作添加到培训操作中

optimizer = tf.train.RMSPropOptimizer(learning_rate=L_RATE)
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)

with tf.control_dependencies(update_ops):
    train_ops = optimizer.minimize(loss=loss, global_step=tf.train.get_global_step())

return tf.estimator.EstimatorSpec(mode=mode, loss=loss, train_op=train_ops)

使用tf.contrib.predictor.from_saved_model恢复不允许检查变量的值。 所以,我的问题是,有没有办法检查它?如果是这样,如何在导出时保存这些BN变量?

我在推理时的表现要比训练和评估时的表现差很多。我舍弃了过度拟合选项,因为它是一个非常简单的网络,而且,在训练结束时(或通常是最后一个),直接使用估算器模型执行预测会比最佳模型产生更好的性能。

0 个答案:

没有答案