gpt4 book ai didi

python-3.x - 如何将张量板与 tf.estimator.Estimator 一起使用

转载 作者:行者123 更新时间:2023-12-03 08:28:42 26 4
gpt4 key购买 nike

我正在考虑将我的代码库移动到 tf.estimator.Estimator ,但我找不到如何将它与张量板摘要结合使用的示例。

MWE:

import numpy as np
import tensorflow as tf

tf.logging.set_verbosity(tf.logging.INFO)

# Declare list of features, we only have one real-valued feature
def model(features, labels, mode):
# Build a linear model and predict values
W = tf.get_variable("W", [1], dtype=tf.float64)
b = tf.get_variable("b", [1], dtype=tf.float64)
y = W*features['x'] + b
loss = tf.reduce_sum(tf.square(y - labels))

# Summaries to display for TRAINING and TESTING
tf.summary.scalar("loss", loss)
tf.summary.image("X", tf.reshape(tf.random_normal([10, 10]), [-1, 10, 10, 1])) # dummy, my inputs are images

# Training sub-graph
global_step = tf.train.get_global_step()
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = tf.group(optimizer.minimize(loss), tf.assign_add(global_step, 1))

return tf.estimator.EstimatorSpec(mode=mode, predictions=y,loss= loss,train_op=train)

estimator = tf.estimator.Estimator(model_fn=model, model_dir='/tmp/tf')
# define our data set
x=np.array([1., 2., 3., 4.])
y=np.array([0., -1., -2., -3.])
input_fn = tf.contrib.learn.io.numpy_input_fn({"x": x}, y, 4, num_epochs=1000)

for epoch in range(10):
# train
estimator.train(input_fn=input_fn, steps=100)
# evaluate our model
estimator.evaluate(input_fn=input_fn, steps=10)

如何在 tensorboard 中显示我的两个摘要?我是否必须注册一个使用 tf.summary.FileWriter 的钩子(Hook)?或者是其他东西?

最佳答案

编辑:
经过测试(在 v1.1.0 中,也可能在更高版本中),很明显 tf.estimator.Estimator会自动为你写总结。我使用 OP 的代码和张量板确认了这一点。

(围绕 r1.4 的一些探索让我得出结论,这种自动摘要写入是由于 tf.train.MonitoredTrainingSession 造成的。)

最终,自动汇总是通过使用钩子(Hook)完成的,因此如果您想自定义 Estimator 的默认汇总,您可以使用钩子(Hook)来实现。以下是原始答案中的(已编辑)详细信息。

您需要使用 Hook ,以前称为 monitors . (Linked 是一个概念/快速入门指南;它的简短之处在于 Estimator API 中内置了 Hook /监控训练的概念。虽然有点令人困惑,但似乎并不推荐使用 Hook 监控器是真的记录在实际源代码中的弃用注释中...)

根据您的使用情况,它看起来像 r1.2 的 SummarySaverHook 适合你的账单。

summary_hook = tf.train.SummarySaverHook(
SAVE_EVERY_N_STEPS,
output_dir='/tmp/tf',
summary_op=tf.summary.merge_all())

您可能希望自定义钩子(Hook)的初始化参数,例如通过提供明确的 SummaryWriter 或每 N 秒而不是 N 步写入一次。

如果您将其传递给 EstimatorSpec ,您将获得自定义的摘要行为:

return tf.estimator.EstimatorSpec(mode=mode, predictions=y,loss=loss,
train_op=train,
training_hooks=[summary_hook])

编辑注:
此答案的先前版本建议通过 summary_hook进入 estimator.train(input_fn=input_fn, steps=5, hooks=[summary_hook]) .这不起作用,因为 tf.summary.merge_all()必须在与模型图相同的上下文中调用。

关于python-3.x - 如何将张量板与 tf.estimator.Estimator 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43782767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com