时代和训练步骤是一回事吗?
Are epochs and training steps the same thing?
features = [tf.contrib.layers.real_valued_column("x", dimension=1)]
estimator = tf.contrib.learn.LinearRegressor(feature_columns=features)
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)
例如,"steps=1000"和"num_epochs=1000"是一个意思吗?如果是,为什么需要复制它?如果不是,我可以不同地设置这两个参数吗?
不,它们不一样。与大多数(所有?)框架一样,Tensorflow 有一些指定时期的命令,还有一些在 steps、a.k.a iterations 上运行的命令. step 是一个 batch,它由模型输入中指定的 batch size 控制。
例如,如果您使用默认批量大小为 256 的 AlexNet,ILSVRC 2012 数据集大约有 128 万张图像,那么每个时期大约有 5000 步 (1,280,000 / 256)。
批量大小是并行处理的图像数量。如果数据集中有 128 万张图像,那么每个 epoch 就必须处理 1280 万张图像:这就是 epoch 的定义——每个输入处理一次。现在算术清楚了吗?
以下是任何机器学习算法或框架中时期和步骤之间的基本区别:
一旦框架通过其训练集中的所有数据点来更新其参数,它就称为一个时期。一步是参数的一次更新(例如,如果训练 DNN,神经网络的权重)。可以使用单个数据点或小批量数据点(例如随机抽取 100 个数据点,有或没有替换)或所有点来获得此更新。因此,正如您所看到的,如果所有数据点都在一个步骤(或参数更新)中使用,它就变成一个纪元,即一步 = 一个纪元。
通常,框架使用小批量处理,并且在一个步骤中,它们将 100 个(或其他数量的)数据点一起批量处理并进行一次更新。在这种情况下,如果说您总共有 100 万个数据点 (10^6),那么一个时期有 10000 个步骤,因为一个步骤包含 100 个数据点。
features = [tf.contrib.layers.real_valued_column("x", dimension=1)]
estimator = tf.contrib.learn.LinearRegressor(feature_columns=features)
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)
例如,"steps=1000"和"num_epochs=1000"是一个意思吗?如果是,为什么需要复制它?如果不是,我可以不同地设置这两个参数吗?
不,它们不一样。与大多数(所有?)框架一样,Tensorflow 有一些指定时期的命令,还有一些在 steps、a.k.a iterations 上运行的命令. step 是一个 batch,它由模型输入中指定的 batch size 控制。
例如,如果您使用默认批量大小为 256 的 AlexNet,ILSVRC 2012 数据集大约有 128 万张图像,那么每个时期大约有 5000 步 (1,280,000 / 256)。
批量大小是并行处理的图像数量。如果数据集中有 128 万张图像,那么每个 epoch 就必须处理 1280 万张图像:这就是 epoch 的定义——每个输入处理一次。现在算术清楚了吗?
以下是任何机器学习算法或框架中时期和步骤之间的基本区别:
一旦框架通过其训练集中的所有数据点来更新其参数,它就称为一个时期。一步是参数的一次更新(例如,如果训练 DNN,神经网络的权重)。可以使用单个数据点或小批量数据点(例如随机抽取 100 个数据点,有或没有替换)或所有点来获得此更新。因此,正如您所看到的,如果所有数据点都在一个步骤(或参数更新)中使用,它就变成一个纪元,即一步 = 一个纪元。
通常,框架使用小批量处理,并且在一个步骤中,它们将 100 个(或其他数量的)数据点一起批量处理并进行一次更新。在这种情况下,如果说您总共有 100 万个数据点 (10^6),那么一个时期有 10000 个步骤,因为一个步骤包含 100 个数据点。