num_epochs和步骤有什么区别?

时间:2017-04-17 15:02:27

标签: python machine-learning tensorflow

在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和步骤分别是什么意思?

2 个答案:

答案 0 :(得分:5)

时代意味着使用您拥有的全部数据。

步骤意味着使用单个批次数据。

所以,n_steps = Number of data in single epoch // batch_size

根据https://www.tensorflow.org/api_docs/python/tf/contrib/learn/Trainable

  • 步骤:训练模型的步骤数。如果没有,永远训练。 'steps'以递增方式工作。如果您调用两次(步数= 10),则总共20个步骤进行训练。如果您不想有增量行为,请改为设置max_steps。如果设置,则max_steps必须为None。

  • batch_size:要在输入上使用的小批量大小,默认为x的第一个维度。如果提供input_fn,则必须为None。

答案 1 :(得分:3)

num_epochs表示input_fn将返回整批次数

的次数

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

对于此处对象estimator的方法,它将停止运行超过“步骤”次数或input_fn停止提供数据,如Tensorflow API所示:< / p>

  

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