epoch,iteration,batch,batch_size

epoch:训练时,所有训练图像通过网络训练一次?(一次前向传播+一次后向传播);测试时,所有测试图像通过网络一次?(一次前向传播)。Caffe不用这个参数。

batch_size:1个batch包含的图像数目,通常设为2的n次幂,常用的包括64,128,256。
     
     
     
   
 网络较小时选用256,较大时选用64。

iteration?:训练时,1个batch训练图像通过网络训练一次?(一次前向传播+一次后向传播),每迭代一次权重更新一次;测试时,1个batch测试图像通过网络一次?(一次前向传播)。

三者之间的关系:iterations =
epochs×(images /
batch_size)?,所以1个epoch包含的
     
     
     
     
   
 iteration次数=样本数量/batch_size;

以Caffe的mnist?为例(具体参数见相应的prototxt文件):

training_images=60k,batch_size=64, maximum_iterations=
10k?,test
_images=10k,batch_size=100, test_iterations=100:

在这个参数设置下,训练时经历了10.6个epoch,测试时100次iteration(1个epoch)恰好可以遍历整个测试集。

注意:?上面例子中如果训练时maximum_iterations=
10k,那么将会有10k×64=640k幅图像参与训练,乍一看这个是错的,因为640k远远大于训练集60k。事实上这是没问题的,当剩余的训练样本不够一个batch时,Caffe会带着这些剩余的样本然后重头开始再取一个batch。所以在设置Training和Testing的参数时需要注意,训练的某些参数可以不整除(比如10.6个epoch),但测试时设置的参数最好要能整除(测试网络时正好遍历完所有测试样本是最理想的情况)。

测试的时候,test_batch_size×test_iterations?>number
of test
images也不会出错,甚至这样做也可以(这种情况下已经测试过的图像会组成新的batch重复测试),不过设置参数时最好还是test_batch_size×test_iterations?=number
of test images。

在caffe中很多预训练好的模型的iteration都是40000,fast_rcnn那个代码也是40000

时间: 2024-08-03 07:23:10

epoch,iteration,batch,batch_size的相关文章

深度学习中的Epoch,Batchsize,Iterations

导读 Epoch,Batchsize,Iterations,这三个都是深度学习训练模型时经常遇到的概念.你一定有过这样的时刻,面对这几个词傻傻分不清楚,这三个概念究竟是什么,它们又有什么区别? 梯度下降法 一切的一切,要从机器学习中的梯度下降法说起. 首先让我们来回顾一下这个常见的不能再常见的算法. 梯度下降法是机器学习中经典的优化算法之一,用于寻求一个曲线的最小值.所谓"梯度",即一条曲线的坡度或倾斜率,"下降"指代下降递减的过程. 梯度下降法是迭代的,也就是说我

深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)

1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说明一下:即根据每一行X中的一个数,从W中取出对应行的128个数据,比如X[1, 3]个数据是3062,即从W中的第3062行取出128个数据 import numpy as np import tensorflow as tf data = np.array([[2, 1], [3, 4], [5,

在C#下使用TensorFlow.NET训练自己的数据集

在C#下使用TensorFlow.NET训练自己的数据集 今天,我结合代码来详细介绍如何使用 SciSharp STACK 的 TensorFlow.NET 来训练CNN模型,该模型主要实现 图像的分类 ,可以直接移植该代码在 CPU 或 GPU 下使用,并针对你们自己本地的图像数据集进行训练和推理.TensorFlow.NET是基于 .NET Standard 框架的完整实现的TensorFlow,可以支持 .NET Framework 或 .NET CORE , TensorFlow.NET

PyTorch LSTM的一个简单例子:实现MNIST图片分类

在上一篇博客中,我们实现了用LSTM对单词进行词性判断,本篇博客我们将实现用LSTM对MNIST图片分类.MNIST图片的大小为28*28,我们将其看成长度为28的序列,序列中的每个数据的维度是28,这样我们就可以把它变成一个序列数据了.代码如下. ''' 本程序实现用LSTM对MNIST进行图片分类 ''' import torch import numpy as np import torch.nn as nn import torch.utils.data as Data import t

Tensorflow的CNN教程解析

之前的博客我们已经对RNN模型有了个粗略的了解.作为一个时序性模型,RNN的强大不需要我在这里重复了.今天,让我们来看看除了RNN外另一个特殊的,同时也是广为人知的强大的神经网络模型,即CNN模型.今天的讨论主要是基于Tensorflow的CIFAR10教程,不过作为对比,我们也会对Tensorflow的MINST教程作解析以及对比.很快大家就会发现,逻辑上考虑,其实内容都是大同小异的.由于所对应的目标不一样,在数据处理方面可能存在着些许差异,这里我们以CIFAR10的为基准,有兴趣的朋友欢迎去

Pytorch实现卷积神经网络CNN

Pytorch是torch的Python版本,对TensorFlow造成很大的冲击,TensorFlow无疑是最流行的,但是Pytorch号称在诸多性能上要优于TensorFlow,比如在RNN的训练上,所以Pytorch也吸引了很多人的关注.之前有一篇关于TensorFlow实现的CNN可以用来做对比. 下面我们就开始用Pytorch实现CNN. step 0 导入需要的包 1 import torch 2 import torch.nn as nn 3 from torch.autograd

学习笔记TF040:多GPU并行

TensorFlow并行,模型并行,数据并行.模型并行根据不同模型设计不同并行方式,模型不同计算节点放在不同硬伯上资源运算.数据并行,比较通用简便实现大规模并行方式,同时使用多个硬件资源计算不同batch数据梯度,汇总梯度全局参数更新. 数据并行,多块GPU同时训练多个batch数据,运行在每块GPU模型基于同一神经网络,网络结构一样,共享模型参数. 同步数据并行,所有GPU计算完batch数据梯度,统计将多个梯度合在一起,更新共享模型参数,类似使用较大batch.GPU型号.速度一致时,效率最

Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano

转载 - Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano This the second part of the Recurrent Neural Network Tutorial. The first part is here. Code to follow along is on Github. In this part we will implemen

【增强学习】Recurrent Visual Attention源码解读

Mnih, Volodymyr, Nicolas Heess, and Alex Graves. "Recurrent models of visual attention." Advances in Neural Information Processing Systems. 2014. 戳这里下载训练代码,戳这里下载测试代码. 这篇文章处理的任务非常简单:MNIST手写数字分类.但使用了聚焦机制(Visual Attention),不是一次看一张大图进行估计,而是分多次观察小部分图