layer Normal实现的好像有点缺陷

开始搞语音识别,中间需要使用layerNormal,然后发现gluon的layerNormal只能指定一个通道就像这样写

nn.LayerNorm(axis=1)

如果输入的数据布局是NCHW那么这个op就只在C维度上求均值方差,而不管HW两个维度,这好像和layerNormal理论不符。要么我们可以在使用layerNormal之前先进行reshape,但是这样就不能使用HybridSequential了。pytorch的layerNorm是可以这样用的。

LayerNorm(axis=(1,2,3))

有没有人有类似的疑问呢?

突然觉得reshape也不行,因为reshape后最后一个维度的size会变成C×H×W,这样layerNorm层里的gamma和beta会不会变成C×H×W维度,而实际上他们应该等于卷积的通道数也就是C,感觉这个layerNorm实现的有问题啊。

为啥没人回复呢?是我理解的有问题吗?还望高手指点啊!

我又仔细看了文档,而且跟numpy计算对比,发现,确实只计算指定维度的mean和var,感觉这样是不对的。没有人关心这个问题吗?:weary::weary::weary:

建议把你的问题发到mxnet的github issue里,可能反应会快一点。

谢谢,我是想在这里确认一下这个问题,我怕我是不知道正确用法:joy:

我也发现有这个问题,问下你最后怎么解决的?