当前位置:  开发笔记 > 编程语言 > 正文

使用Estimators时,使用tf.train.SessionRunHook替换验证监视器

如何解决《使用Estimators时,使用tf.train.SessionRunHook替换验证监视器》经验,为你挑选了1个好方法。

我正在运行一个DNNClassifier,我正在训练时监控其准确性.来自contrib/learn的monitors.ValidationMonitor一直很好用,在我的实现中我定义它:

validation_monitor = skflow.monitors.ValidationMonitor(input_fn=lambda: input_fn(A_test, Cl2_test), eval_steps=1, every_n_steps=50)

然后使用来自的电话:

clf.fit(input_fn=lambda: input_fn(A, Cl2),
            steps=1000, monitors=[validation_monitor])

哪里:

clf = tensorflow.contrib.learn.DNNClassifier(...

这很好用.也就是说,验证监视器似乎已被弃用,并且类似的功能将被替换tf.train.SessionRunHook.

我是TensorFlow的新手,对我而言,这样的替换实现看起来似乎并不重要.任何建议都非常感谢.同样,我需要在特定步骤后验证培训.首先十分感谢.



1> lukearend..:

有一个未记录的实用程序monitors.replace_monitors_with_hooks(),它将监视器转换为钩子.该方法接受(i)可以包含监视器和钩子的列表,以及(ii)将使用钩子的Estimator,然后通过在每个Monitor周围包装SessionRunHook来返回钩子列表.

from tensorflow.contrib.learn.python.learn import monitors as monitor_lib

clf = tf.estimator.Estimator(...)

list_of_monitors_and_hooks = [tf.contrib.learn.monitors.ValidationMonitor(...)]
hooks = monitor_lib.replace_monitors_with_hooks(list_of_monitors_and_hooks, clf)

这是不是一个真正的真正解决方案的全面更换ValidationMonitor -我们只是一个非弃用功能包裹起来,而不是问题.但是,我可以说这对我来说是有用的,因为它保留了我需要的所有功能来自ValidationMonitor(即评估每n个步骤,使用度量标准提前停止等)

还有一件事 - 使用这个钩子你需要从一个tf.contrib.learn.Estimator(只接受监视器)更新到更完整的官方tf.estimator.Estimator(只接受钩子).因此,您应该将分类器实例化为a tf.estimator.DNNClassifier,并使用其方法进行训练train()(这只是重新命名fit()):

clf = tf.estimator.Estimator(...)

...

clf.train(
    input_fn=...
    ...
    hooks=hooks)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有