训练多层感知器时,历元和迭代的区别是什么?
当前回答
根据谷歌的机器学习术语表,一个纪元被定义为
“对整个数据集进行完整的训练,以便每个示例都被看到一次。因此,一个epoch表示N/batch_size训练迭代,其中N是示例的总数。”
如果你正在训练10个epoch的模型,批大小为6,给定总共12个样本,这意味着:
该模型将能够在2次迭代(12 / 6 = 2)即单个epoch中看到整个数据集。 总的来说,该模型将有2 X 10 = 20个迭代(每个epoch的迭代X无epoch) 每次迭代后,将对损失和模型参数进行重新评估!
其他回答
Epoch和iteration描述的是不同的东西。
时代
epoch描述了算法看到整个数据集的次数。因此,每当算法看到数据集中的所有样本时,就完成了一个epoch。
迭代
迭代描述了一批数据通过算法的次数。在神经网络的例子中,这意味着向前传递和向后传递。因此,每当你通过神经网络传递一批数据时,你就完成了一次迭代。
例子
举个例子可能会更清楚。
假设您有一个包含10个示例(或样本)的数据集。批处理大小为2,并指定算法运行3个epoch。
因此,在每个epoch中,您有5个批次(10/2 = 5)。每个批次都通过算法,因此每个epoch有5个迭代。 因为您已经指定了3个epoch,所以总共有15个迭代(5*3 = 15)用于训练。
在神经网络术语中:
一个epoch =所有训练示例的一个向前传递和一个向后传递 批大小=一次向前/向后传递中训练示例的数量。批处理大小越大,所需的内存空间就越大。 迭代次数=通过次数,每次通过使用[批大小]示例的数量。需要明确的是,一次传球=一次向前传球+一次向后传球(我们不把向前传球和向后传球算作两次不同的传球)。
例如:如果你有1000个训练样本,你的批处理大小是500,那么将需要2次迭代来完成1个epoch。
供参考:权衡批大小和迭代次数来训练神经网络
术语“批处理”是模棱两可的:有些人用它来表示整个训练集,有些人用它来指代一次向前/向后传递中的训练示例的数量(就像我在这个回答中所做的那样)。为了避免这种歧义,并明确batch对应于一次正向/向后传递中训练示例的数量,可以使用术语mini-batch。
你有训练数据,你洗牌并从中挑选小批量。当您使用一个迷你批处理调整权重和偏差时,您已经完成了一次迭代。
一旦你用完了你的小批,你就完成了一个纪元。然后你再次洗牌你的训练数据,再次选择你的小批量,并再次遍历它们。那将是你的第二个纪元。
根据谷歌的机器学习术语表,一个纪元被定义为
“对整个数据集进行完整的训练,以便每个示例都被看到一次。因此,一个epoch表示N/batch_size训练迭代,其中N是示例的总数。”
如果你正在训练10个epoch的模型,批大小为6,给定总共12个样本,这意味着:
该模型将能够在2次迭代(12 / 6 = 2)即单个epoch中看到整个数据集。 总的来说,该模型将有2 X 10 = 20个迭代(每个epoch的迭代X无epoch) 每次迭代后,将对损失和模型参数进行重新评估!
我想在神经网络术语的背景下:
Epoch:当你的网络最终遍历整个训练集(即,每个训练实例一次)时,它完成了一个Epoch。
为了定义迭代(也就是步骤),你首先需要知道批处理的大小:
Batch Size: You probably wouldn't like to process the entire training instances all at one forward pass as it is inefficient and needs a huge deal of memory. So what is commonly done is splitting up training instances into subsets (i.e., batches), performing one pass over the selected subset (i.e., batch), and then optimizing the network through backpropagation. The number of training instances within a subset (i.e., batch) is called batch_size. Iteration: (a.k.a training steps) You know that your network has to go over all training instances in one pass in order to complete one epoch. But wait! when you are splitting up your training instances into batches, that means you can only process one batch (a subset of training instances) in one forward pass, so what about the other batches? This is where the term Iteration comes into play: Definition: The number of forwarding passes (The number of batches that you have created) that your network has to do in order to complete one epoch (i.e., going over all training instances) is called Iteration.
例如,当你有10,000个训练实例,你想用10的大小进行批处理;你必须进行10,000/10 = 1,000次迭代才能完成1个epoch。
希望这能回答你的问题!
推荐文章
- 如何从scikit-learn决策树中提取决策规则?
- 数据挖掘中分类和聚类的区别?
- 主体、使用者和主体之间的意义和区别是什么?
- 什么是分片,为什么它很重要?
- 我在哪里调用Keras的BatchNormalization函数?
- 编程中的术语“上下文”?
- model.eval()在pytorch中做什么?
- 为什么binary_crossentropy和categorical_crossentropy对同一个问题给出不同的性能?
- 覆盖或覆盖
- 火灾vs. Webservice
- 为什么使用softmax而不是标准归一化?
- 为什么两个不同的概念都叫“堆”?
- 一般来说,应该选择哪种机器学习分类器?
- Keras,如何得到每一层的输出?
- 缓冲区是什么意思?