Machine learning 时代和训练步骤是一样的吗?

Machine learning 时代和训练步骤是一样的吗?,machine-learning,linear-regression,Machine Learning,Linear Regression,例如,这些“步骤=1000”和“num_epochs=1000”的含义是否完全相同?如果是,为什么需要复制?如果不是,我可以将这两个参数设置为不同的吗?否,它们不相同。与大多数(all?)框架一样,Tensorflow有一些命令用于指定年代,还有一些命令用于步骤,即迭代。步骤是一个批次,由模型输入中指定的批次大小控制 例如,如果您使用默认批量大小为256的AlexNet,并且ILSVRC 2012数据集大约有128万个图像,那么每个历元大约有5000个步骤(1280000/256) Batch

例如,这些“步骤=1000”和“num_epochs=1000”的含义是否完全相同?如果是,为什么需要复制?如果不是,我可以将这两个参数设置为不同的吗?

否,它们不相同。与大多数(all?)框架一样,Tensorflow有一些命令用于指定年代,还有一些命令用于步骤,即迭代。步骤是一个批次,由模型输入中指定的批次大小控制

例如,如果您使用默认批量大小为256的AlexNet,并且ILSVRC 2012数据集大约有128万个图像,那么每个历元大约有5000个步骤(1280000/256)


Batch size是并行处理的图像数。如果数据集中有128万张图像,那么每个历元必须处理1280万张图像:这就是历元的定义——每个输入处理一次。现在,算法清晰了吗?

以下是任何机器学习算法或框架中历元和步骤之间的基本区别:

一旦框架通过其训练集中的所有数据点来更新其参数,它就被称为一个历元。步骤是参数的一次更新(例如,如果训练DNN,则神经网络的权重)。可使用单个数据点或一小批数据点(例如,随机抽取100个数据点,有无替换)或所有数据点进行更新。因此,如您所见,如果所有数据点都在一个步骤(或参数更新)中使用,它将成为一个历元,即一个步骤=一个历元


通常,框架使用小型批处理,在一个步骤中,它们将100个(或其他数量的)数据点批处理在一起,并执行一次更新。在这种情况下,如果您总共有100万个数据点(10^6),那么一个历元有10000个步骤,因为一个步骤包含100个数据点。

通过“每个历元5000个步骤”,您的意思是批次大小256等于历元数吗?请澄清更多。顺便说一句,在我的例子中,我可以将步骤更改为“500”到“1000”吗?我的理解是,由于batch size=“4”,所有数据点都在一个步骤中使用。如果是这样,为什么要指定“steps”参数?它不应该总是通过“(#数据点/批量大小)*时代”自动计算吗?
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)