精华内容
下载资源
问答
  • Batch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开。 首先,为什么需要有 Batch_Size 这个参数? Batch 的选择,首先决定的是下降的方向。如果数据集比较小,完全可以采用全数据集 ( ...

    From Here

    谈谈深度学习中的 Batch_Size

    Batch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开。

    首先,为什么需要有 Batch_Size 这个参数?

    Batch 的选择,首先决定的是下降的方向。如果数据集比较小,完全可以采用全数据集 ( Full Batch Learning )的形式,这样做至少有 2 个好处:其一,由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。其二,由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。 Full Batch Learning 可以使用 Rprop 只基于梯度符号并且针对性单独更新各权值。

    对于更大的数据集,以上 2 个好处又变成了 2 个坏处:其一,随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。其二,以 Rprop 的方式迭代,会由于各个 Batch 之间的采样差异性,各次梯度修正值相互抵消,无法修正。这才有了后来 RMSProp 的妥协方案。

    既然 Full Batch Learning 并不适用大数据集,那么走向另一个极端怎么样?

    所谓另一个极端,就是每次只训练一个样本,即 Batch_Size = 1。这就是在线学习(Online Learning)。线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。对于多层神经元、非线性网络,在局部依然近似是抛物面。使用在线学习,每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛如图所示


    这里写图片描述

    可不可以选择一个适中的 Batch_Size 值呢?

    当然可以,这就是批梯度下降法(Mini-batches Learning)。因为如果数据集足够充分,那么用一半(甚至少得多)的数据训练算出来的梯度与用全部数据训练出来的梯度是几乎一样的。

    在合理范围内,增大 Batch_Size 有何好处?

    • 内存利用率提高了,大矩阵乘法的并行化效率提高。
    • 跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
    • 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

    盲目增大 Batch_Size 有何坏处?

    • 内存利用率提高了,但是内存容量可能撑不住了。
    • 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
    • Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

    调节 Batch_Size 对训练效果影响到底如何?

    这里跑一个 LeNet 在 MNIST 数据集上的效果。MNIST 是一个手写体标准库,我使用的是 Theano 框架。这是一个 Python 的深度学习库。安装方便(几行命令而已),调试简单(自带 Profile),GPU / CPU 通吃,官方教程相当完备,支持模块十分丰富(除了 CNNs,更是支持 RBM / DBN / LSTM / RBM-RNN / SdA / MLPs)。在其上层有 Keras 封装,支持 GRU / JZS1, JZS2, JZS3 等较新结构,支持 Adagrad / Adadelta / RMSprop / Adam 等优化算法。如图所示


    这里写图片描述

    这里写图片描述

    运行结果如上图所示,其中绝对时间做了标幺化处理。运行结果与上文分析相印证:

    • Batch_Size 太小,算法在 200 epoches 内不收敛。
    • 随着 Batch_Size 增大,处理相同数据量的速度越快。
    • 随着 Batch_Size 增大,达到相同精度所需要的 epoch 数量越来越多。
    • 由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。
    • 由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。

    欢迎一起讨论。

    展开全文
  • ArgumentError: argument –batch_size: conflicting option string: –batch_size 每次尝试执行cifar10的代码时都会出现这样一个错误,按照字面意思是:变量重复定义。 在 cifar10代码中问题出现在这一行 tf.app...

    ArgumentError: argument –batch_size: conflicting option string: –batch_size

    每次尝试执行cifar10的代码时都会出现这样一个错误,按照字面意思是:变量重复定义。
    在 cifar10代码中问题出现在这一行

    tf.app.flags.DEFINE_integer('batch_size', 128,"""Number of images to process in a batch.""")

    问题的解决:

    该问题发生的原因是在一个Python环境下运行cifar10.py的代码超过一次,上面一行代码定义了tf.app.flags.FLAGS中的batch_size参数,当运行第二遍cifar10.py时(直接运行或者从别的文件导入), TensorFlow 会检查到这个参数已经存在,因此会报错。
    解决方法:开一个新的控制台来运行该代码,每个新的控制台都会是一个新的python instance。

    展开全文
  • ERROR 运行到loss = criterion(output, target)时 ...ValueError: Expected input batch_size (324) to match target batch_size (4) Log In 解决方法 打印 class Net(nn.Module): def __init__(self): super(Ne...

    ERROR

    运行到loss = criterion(output, target)时
    报错:

    ValueError: Expected input batch_size (324) to match target batch_size (4) Log In
    

    解决方法

    打印

    class Net(nn.Module):
        def __init__(self):
            super(Net, self).__init__()
            self.conv1 = nn.Conv2d(3, 32, 5)
            self.pool = nn.MaxPool2d(2, 2)
            self.conv2 = nn.Conv2d(32, 64, 5)
            self.fc1 = nn.Linear(64, 1024)
            self.fc2 = nn.Linear(1024, 7)
            #self.fc3 = nn.Linear(84, 10)
    
        def forward(self, x):
            x = self.pool(F.relu(self.conv1(x)))
            x = self.pool(F.relu(self.conv2(x)))
            print(x.shape)
            x = x.view(-1, 64)
            print(x.shape)
            x = F.relu(self.fc1(x))
            x = self.fc2(x)
            return x
    

    在x.view(-1,64)前后打印tensor的shape,这个时候就能发现问题出在哪里了:

    torch.Size([4, 64, 9, 9])
    

    根据这个形状,需要把view修改为:

    x = x.view(-1, 64 * 9 * 9)
    

    后面的Linear层也需要对应修改:

    self.fc1 = nn.Linear(64 * 9 * 9, 1024)
    
    展开全文
  • ValueError: Expected input batch_size (32) to match target batch_size (16). 刚开始看到这个BUG,逻辑上有点想不通,但后来想到有可能是数据集本身问题时,我就顺带手看了下数据集的size() 果不其然,看图: ...

    错误展示:

    ValueError: Expected input batch_size (32) to match target batch_size (16).
    

    刚开始看到这个BUG,逻辑上有点想不通,但后来想到有可能是数据集本身问题时,我就顺带手看了下数据集的size()
    果不其然,看图:
    在这里插入图片描述
    最终判断,应该是数据集的部分数据的label值丢失造成的。
    两种解决方案:

    1. 重新选择数据集,或者人工拍错;
    2. 适当修改代码解决BUG;
      坦诚讲:由于我比较懒,所以选择了后者;
      调整后的代码如下:
      在这里插入图片描述
      1个epoch测试一下,问题解决:
      在这里插入图片描述
    展开全文
  • raise ValueError(‘Expected input batch_size ({}) to match target batch_size ({}).’ 记得在正向传播之前打印一下图片的尺寸,这次没注意到图片其实都进来是 RGB 三通道的数据,在利用 .view 函数的时候记得...
  • 【调参炼丹】 Batch_size和Epoch_size

    千次阅读 2019-03-18 17:52:04
    Batch_Size: 首先,batch_size来源于:小批量梯度下降(Mini-batch gradient descent) 梯度下降法是常用的参数更新方法,而小批量梯度下降是对于传统梯度下降法的优化。 深度学习中优化方法的对比 定义: ...
  • from keras import backen as k from keras.layers import multiply ...input1=(batch_size,sequence_length,embedding_dim) input2=(batch_size,sequence_length) input2=k.repeat_elements(k.expand_dims(inputs2
  • batch_size参数设置

    万次阅读 2017-05-16 16:04:09
    Batch_size:定义:一次性读入多少批量的图片,不是样本。Full Batch Learning:Batch_size=数据集大小,适用于小数据集。Mini-batches Learning:Batch_size= N(自己设定),适用于大数据集。Online Learning...
  • Batch_size如何设置

    千次阅读 2018-06-02 12:33:34
    Full Batch Learning:Batch_size=数据集大小,适用于小数据集。Mini-batches Learning:Batch_size= N(自己设定),适用于大数据集。Online Learning(在线学习):Batch_size=1,如何选择Batch_size?A:一定范围...
  • pytorch dataloader和batch_size大小的理解

    千次阅读 2020-10-28 19:21:18
    pytorch中dataloader的大小将根据batch_size的大小自动调整。如果训练数据集有1000个样本,并且batch_size的大小为10,则dataloader的长度就是100。 需要注意的是,如果dataset的大小并不能被batch_size整除,则...
  • tensorflow学习笔记——batch_size

    千次阅读 2021-07-28 12:21:55
    batch_size要适中,太小或太大都不好 1、如果batch_size太小,每轮迭代次数太多,而epoch又不能减少,因此训练速度变慢;同时,显存或内存利用率不高。 2、如果batch_size太大,每轮迭代次数太少,在epoch不变的情况...
  • 因为我再dataloader中传入了drop_last=True,就报错ValueError: batch_sampler option is mutually exclusive with batch_size, shuffle, sampler, and drop_last,看源码发现问题所在,因为参数设置的冲突导致,我...
  • 如何理解RNN中的Batch_size

    千次阅读 多人点赞 2020-03-28 14:00:27
    对于Batch_size肯定都不陌生,是机器学习中的一个重要参数 多数时候使用Batch的训练效果会比设置Batch_size=1的训练效果要好。 通俗的理解一下,Batch_size=126时模型一次看了126个样本再来决定梯度下降往哪个方向...
  • 模型训练中batch_size的选择

    千次阅读 2019-01-31 18:10:58
    总结:训练过程中,batch_size的选取对模型精度和模型泛化能力的影响: batch_size过大,模型没有BN层,模型收敛速度变慢。而且模型容易陷入局部最小值,模型精度低。 batch_size适中,模型没有BN层,模型收敛速度...
  • In the solver.prototxt additer_size: 2...That will mean that it would do 2 iterations of batch_size: 30 before updating the weights. This means that effectively you would using a batch_size: 60.You can c
  • 谈谈深度学习中的 Batch_Size

    万次阅读 多人点赞 2015-11-12 19:59:38
    谈谈深度学习中的 Batch_SizeBatch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开。首先,为什么需要有 Batch_Size 这个参数?Batch 的选择,首先决定的是下降的方向。如果数据集比较小,...
  • 在学习tensorflow时,有几个地方都能设置batch_size 参数,这里对batch_size的设置做一个总结 首先强调一下,这个batch_size的作用就是规定每次梯度更新的样本数量 目前已知设置 batch_size 的地方有: tf.data....
  • AI:训练神经网络模型过程中batch_size,steps_per_epoch,epochs意义 batch_size:批大小。batch_size是计算效率和内存容量之间的平衡参数。若为高性能GPU,可以设置更大的batch_size值。神经网络训练过程中,...
  • 在新手搭建神经网络时,常弄不清epoch、batch_size、iteration和batch_idx(iteration )的区别。 这里以torchvision自带的CIFAR10数据集来举例,通过代码操作来直观地对这几个概念进行理解。 声明,这里batch_idx==...
  • 前言:在对神经网络进行训练时,大家经常会遇到一个超参数:batch_size 那么,batch_size究竟是什么,又该如何最优的设置这个值呢? batch_size个人理解:将所训练的样本数量分为多少个为一组。这个值的大小与梯度...
  • https://discuss.pytorch.org/t/valueerror-expected-input-batch-size-324-to-match-target-batch-size-4/24498 原因 感觉是因为,卷积之后获得了特征图,但是因为没有计算出正确的特征图的尺寸大小,在x.view...
  • batch_size的理解

    千次阅读 2018-03-31 08:20:57
    1.当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够。但盲目减少会导致无法收敛,batch_size=1时为在线学习。2.batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据...
  • batchbatch_size、epoch、iteration简介

    万次阅读 多人点赞 2018-02-04 02:42:30
    DL通常用SGD的优化算法进行训练,也就是一次(1 个iteration)一起训练batchsize个样本,计算它们的平均损失函数值,来更新参数。 (2)iteration:1个iteration即迭代一次,也就是用batchsize个样本训练一次。 ...
  • 相当于读取batchsize*itersize个图像才做一下gradient decent。 这个参数可以规避由于gpu不足而导致的batchsize的限制 因为你可以用多个iteration做到很大的batch 即使单次batch有限 参考资料: Caffe中的bat...
  • 报错内容: Traceback (most recent call last): File "main.py", line 48, in <module> training_model.train() ... self.batch_loss(labels) File "/home/usr/longtail/run_networks.py", line ...
  • pytorch中多GPU的batch_size问题

    千次阅读 2020-10-17 21:40:40
    都是因为batch_size没有设好。 在端到端的语音中,一个语句就是一个输入,total即总的输入就是text中的行数,用wc -l text,就可以看到了。 多个gpu训练时,每个gpu上的负载时batch_size / n_gpu 训练迭代的次数为...
  • 学习率与batch_size对模型性能的影响

    千次阅读 2020-02-29 12:31:38
    batch_size有一个计算公式,即, 或者 , N为训练数据集大小, batch为需要多少次迭代才能在一个epoch中训练完整个数据集。batch_size参数决定了完整训练数据集1个epoch需要多少个batch。 学习率与batch_size在权重...
  • caffe模型训练batch_size设置

    千次阅读 2018-04-13 19:04:57
    Batch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开。首先,为什么需要有 Batch_Size 这个参数?Batch 的选择,首先决定的是下降的方向。如果数据集比较小,完全可以采用全数据集 ( Full ...
  • 深度学习中的batch_size设置

    万次阅读 2018-08-20 16:15:26
    Batch_Size(批尺寸)是深度学习中的重要参数,本文通过讲解batch_size存在的原因,选取合理的参数值的优缺点,建议设置的大小。  一、Mini-batches 方法的重要性 如果数据集比较小,完全可以把整个数据集用来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 241,857
精华内容 96,742
关键字:

BATCH_SIZE