首页 > 解决方案 > 导出 Tensorflow Estimator 时是否保存了变量?

问题描述

导出 Estimator 时是否保存了变量的值(例如 Batch Normalizationmoving_mean和)?moving_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)

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

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

标签: pythontensorflowmachine-learningtensorflow-estimator

解决方案


推荐阅读