num_epochs和steps有什么区别?

4
在TensorFlow的入门代码中:
import tensorflow as tf
import numpy as np

features = [tf.contrib.layers.real_valued_column("x", dimension=1)]
estimator = tf.contrib.learn.LinearRegressor(feature_columns=features)
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, batch_size=4, num_epochs=1000)
estimator.fit(input_fn=input_fn, steps=1000)
estimator.evaluate(input_fn=input_fn)

我知道batch_size的含义,但是当只有4个训练样本时,num_epochs和steps分别代表什么意思呢?


1
可能是步骤和时代之间的区别是什么?的重复问题。 - ml4294
我认为这是与https://dev59.com/01oT5IYBdhLWcg3wpQuD重复的问题。你可能会在那里找到一个解释得很好的答案。 - ml4294
此外,请查看文档:https://www.tensorflow.org/api_docs/python/tf/contrib/learn/Trainable - Jeff
谢谢。这确实帮了很多忙。 - iamabug
2个回答

5
一个 epoch 意味着使用您拥有的所有数据。
一步意味着使用单个批次数据。
因此,n_steps = 单个 epoch 中的数据数量 // 批量大小。
根据 https://www.tensorflow.org/api_docs/python/tf/contrib/learn/Trainable
- steps:训练模型的步数。如果为 None,则永久训练。'steps' 递增地工作。如果您两次调用 fit(steps=10),则总共进行 20 步训练。如果不想具有递增行为,请设置 max_steps。如果设置了 max_steps,则必须为 None。 - batch_size:输入时要使用的小批量大小,默认为 x 的第一个维度。如果提供了 input_fn,则必须为 None。

1
这很有道理,但是num_epochs怎么办?总共只有4个例子。 - iamabug
1
我尝试了不同的num_epochs和steps值,发现steps不能大于num_epochs。也许num_epochs是训练次数的上限,而steps是实际的训练次数。非常感谢。 - iamabug

3

num_epochs表示input_fn返回整个批次的次数。

steps表示函数应该运行多少次。

对于此处对象estimator的方法,它会停止运行,要么是运行超过了“steps”次,要么是input_fn停止提供数据,根据Tensorflow API

对于每个步骤,调用input_fn,它返回一批数据。评估直到:-处理了steps批次,或-input_fn引发输入结束异常(OutOfRangeError或StopIteration)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接