layer Normal实现的好像有点缺陷


#1

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

nn.LayerNorm(axis=1)

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

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

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


#2

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


#3

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


#4

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


#5

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