如何确定批量大小?

时间:2018-06-21 23:37:28

标签: deep-learning pytorch

我正在看这个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图层指定批处理大小?您在加载数据时决定什么是迷你批处理?

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

2 个答案:

答案 0 :(得分:1)

您在数据加载器中预定义了batch_Size,对于线性图层,您无需指定批处理大小,但可以指定上一层的特征数以及希望在线性操作后获得的特征数。

这是Pytorch文档中的代码示例

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

答案 1 :(得分:1)

正如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行中检查实现。它实际上与我们上面讨论的内容匹配。