首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tensorflow中为教程示例选择num_epochs值

在Tensorflow中为教程示例选择num_epochs值
EN

Stack Overflow用户
提问于 2017-09-29 14:40:43
回答 1查看 176关注 0票数 1

https://www.tensorflow.org/get_started/get_started上的tensorflow教程有一个估计器的示例,他们在其中创建线性回归模型,如下所示:

代码语言:javascript
复制
import tensorflow as tf
import numpy as np 

feature_columns = [tf.feature_column.numeric_column("x", shape=[1])]

estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)

x_train = np.array([1., 2., 3., 4.])
y_train = np.array([0, -1., -2., -3.])
x_eval = np.array([2., 5., 8., 1.])
y_eval = np.array([-1.01, -4.1, -7, 0.])

input_fn = tf.estimator.inputs.numpy_input_fn({"x":x_train}, y_train, batch_size = 4, num_epochs=None, shuffle=True)
train_input_fn = tf.estimator.inputs.numpy_input_fn({"x":x_train}, y_train, batch_size = 4, num_epochs=1000, shuffle=False)
eval_input_fn = tf.estimator.inputs.numpy_input_fn({"x":x_eval}, y_eval, batch_size = 4, num_epochs=1000, shuffle = False)

estimator.train(input_fn=input_fn, steps=1000)

train_metrics = estimator.evaluate(input_fn = train_input_fn)
eval_metrics = estimator.evaluate(input_fn = eval_input_fn)

print("train metrics: %r"% train_metrics)
print("eval metrics: %r"% eval_metrics)

我的问题是'train_input_fn‘和'eval_input_fn’为什么我们需要选择'num_epochs=1000'?

以下是具有不同'num_epochs‘值的输出:

num_epochs=1000

代码语言:javascript
复制
train metrics: {'global_step': 1000, 'loss': 4.3708383e-08, 'average_loss': 1.0927096e-08}
eval metrics: {'global_step': 1000, 'loss': 0.010135064, 'average_loss': 0.002533766}

num_epochs=1

代码语言:javascript
复制
train metrics: {'global_step': 1000, 'loss': 9.6500253e-07, 'average_loss': 2.4125063e-07}
eval metrics: {'global_step': 1000, 'loss': 0.010293347, 'average_loss': 0.0025733367}

我原以为num_epochs=1的时候'loss‘和'average_loss’的值是一样的,有人能帮我理解一下吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-10-07 01:28:42

你的直觉是正确的:

代码语言:javascript
复制
0.002533766 == 0.010293347 / 4

代码语言:javascript
复制
0.002533766 == 0.010293347 / x_eval.shape[0]

代码语言:javascript
复制
average_loss == epoch_loss / x_eval.shape[0]

然而,我也不明白为什么选择多个时期进行评估是有意义的,特别是。如果是x_eval.shape[0] == batch_size。也许他们只是想说明函数tf.estimator.inputs.numpy_input_fn接受num_epochs作为参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46483103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档