python - 导出 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 变量?
我在推理时的表现比在训练和评估时的表现要差得多。我放弃了过拟合选项,因为它是一个非常简单的网络,另外,在训练结束时(或通常是最后一个)直接使用估计器模型执行预测会比最佳模型获得更好的性能。
解决方案
推荐阅读
- java - 如何根据 JUnit 中的测试大小对测试进行分类
- python - 将 LIL 稀疏矩阵的所有元素设置为零,同时保持其稀疏性
- drake - drake:搜索系统的固定点和修剪点
- apache - Apache modsecurity:限制每秒每个资源的请求
- geospatial - 如何在spotfire中刷新形状数据文件
- python - 如何从 Python 控制台应用程序中删除特殊字符和间距?
- php - 如何在 php7 中激活 json 扩展?
- php - 在php codeigniter中获取Referrer Url
- android - 我在删除图像按钮背景时遇到错误
- c# - 调整图片框宽度并保持纵横比