+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Pytorch batchnorm1D,批处理大小为1

发布于2021-04-12 14:54     阅读(378)     评论(0)     点赞(22)     收藏(0)


0

1

2

3

4

5

我正在尝试执行二进制网络。并使用带有自定义二值化层的简单感知器,如下所示

self.w = torch.nn.Parameter((torch.normal(0, 1, size=(param['input_size'], param['hidden_size']))),
                                    requires_grad=False)        
self.fc1 = BinarizeLinear(param['hidden_size'], param['n_classes'])
self.bn = nn.BatchNorm1d(param['n_classes'])
self.softmax = nn.LogSoftmax()

但是,我希望它以1的批量大小训练它。我尝试过InstanceNorm但实例范数计算了Height和width轴上的均值和偏差。关于使用一批1进行训练时如何执行标准化的任何建议或想法。是否有任何变通办法,或者我必须制作自定义标准化层?

作为一种解决方法,我尝试在输入后fc1重新调整输入中的形状,以重新调整输入的大小,以使它们通过pytorch的``_check_dim''方法传递。

x = self.fc1(x)
x = x.reshape(param['batch_size'],x.shape[0], x.shape[1])
x = self.bn(x)

但是我得到了RuntimeError: running_mean should contain 1 elements not 2 有意义的错误 我正在尝试一些棘手的方法,如果有人可以指导我有关如何实现的正确方法,我将不胜感激。


解决方案


暂无回答

0

1

2

3

4

5



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/936030/0c03705b60162465059c/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

22 0
收藏该文
已收藏

评论内容:(最多支持255个字符)