【问题标题】:how is the batch size determined?批量大小是如何确定的?
【发布时间】:2018-12-01 09:23:11
【问题描述】:

我正在看这个 pytorch 入门教程:

https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#sphx-glr-beginner-blitz-neural-networks-tutorial-py

zero_grad() 函数被用于将梯度归零,这意味着它以小批量运行,这是一个正确的假设吗?如果是,批量大小在哪里定义??

我为nn.conv2d找到了以下内容:

For example, nn.Conv2d will take in a 4D Tensor of nSamples x nChannels x Height x Width.

在那种情况下nSamples 是批量大小?

但是如何为nn.Linear 层指定批量大小?当你加载数据时,你决定你的小批量是什么还是什么?

我在这里做了一些可能完全不正确的假设,如果我错了,请纠正我。 谢谢!

【问题讨论】:

    标签: deep-learning pytorch


    【解决方案1】:

    您在数据加载器中预定义了 batch_Size,对于线性层,您无需指定批量大小,而是指定前一层的特征数以及您希望在线性操作后获得的特征数。

    这是来自 Pytorch 文档的代码示例

    m = nn.Linear(20, 30)
    input = Variable(torch.randn(128, 20))
    output = m(input)
    print(output.size())
    

    【讨论】:

      【解决方案2】:

      正如 Ryan 所说,您不必在 Lieanr 层中指定批量大小。

      在这里,我想为您添加一些内容以澄清更多细节。

      让我们首先考虑线性层的方程:

      其中 X 是大小为 batch_size * in_feats_dim 的张量,W 是大小为 out_feats_dim 和 in_feats_dim 的权重矩阵,b 是大小为 out_feats_dim 的偏置向量。

      到目前为止,您可能会发现参数 W 和 b 与批量大小无关。

      您可以在 Pytorch nn.module.functional.linear 第 1000 行到第 1002 行检查实现。它实际上与我们上面讨论的一致。

      【讨论】:

        猜你喜欢
        • 2021-05-31
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        • 2021-02-02
        • 2022-08-23
        • 1970-01-01
        • 2010-12-12
        • 2017-02-09
        相关资源
        最近更新 更多