如果我使用批处理规范化但设置batch_size = 1,会发生什么?

时间:2020-01-10 19:19:24

标签: python tensorflow deep-learning pytorch batch-normalization

由于我使用3D医学图像作为训练数据集,由于GPU的限制,批次大小只能设置为1。有人告诉我,当batch_size = 1时std dev将为0。(x-mean)/ std_dev将因除以0而导致错误。

但是,当我设置batch_size = 1时为什么没有发生错误?为什么我的网络受到了预期的良好培训?有人可以解释吗?

Some people认为:

由于两种情况,可能不会遇到<script type="text/javascript"> function checkValues(sender, args) { var radGrid = $find('<%=RadGrid1.ClientID %>'); var masterTable = radGrid.get_masterTableView(); var row = sender._element.getAttribute("rowindex"); if (row != 0) { for (var i = 0; i < row; i++) { if (masterTable.get_dataItems()[i].findControl("value").get_value() < args.get_newValue()) { sender.set_value(" "); sender.focus(); } } } } </script> 。首先,将异常捕获在ZeroDivisionError catch块中。其次,向方差项添加一个小的有理数(try),以使其永远不会为零。

但是some people不同意。他们说:

您应该计算批次图像中所有像素的均值和标准差。 (因此,即使1e-19仍然有很多像素。因此batch_size = 1仍然可以工作的原因并不是因为batch_size=1

我检查了pytorch源代码,从代码中我认为后者是正确的。

有人有不同的看法吗?

0 个答案:

没有答案