说我们有一些输入数据,地面真相标签和神经网络。然后,我们使用这些数据和标签来训练模型并获得一些结果。
由于某种原因,我们发现代替使用原始数据作为输入,而是计算数据的局部标准偏差并将其用作输入可以为我们带来更好的结果。这是一个计算本地标准偏差的示例,它来自here:
h = 1; % for half window size of 3
x = [4 8 1 1 1 7 9 3]; % input signal
N = length(x); % length of the signal
o = ones(1, N); % array for output
for i = 1 : N
% calculate standard deviation using the built-in std command
% for the current window
o(i) = std(x(max(1, i - h) : min(N, i + h)));
end
所以,这是我的问题:不是由我们自己计算局部标准差,而是可以使用卷积层并让模型学会自己执行这种操作吗?
如果我们不能通过使用单个卷积层来做到这一点,是否可以通过使用更复杂的模型来做到这一点?
如果我们能够做到这一点,那么我还有另一个问题:为什么一个模型不能学会自己执行批标准化操作?为什么当今人们仍需要手动添加批处理归一化层?
我在Google上做了一些研究,这是我得到的。虽然我还是有些困惑:
https://matlabtricks.com/post-20/calculate-standard-deviation-case-of-sliding-window
提前谢谢!
答案 0 :(得分:1)
批处理归一化在标准归一化之后转换并重新缩放张量。您问题中的链接仅提供一种有效进行标准标准化的方法。
从统计的角度来看,标准归一化会降低输入张量中的自由度(dof),而批量归一化中的两个可学习参数会加回这两个dof。尚不清楚如何提出带有两个参数(dof)的卷积层,该卷积层会执行类似的批归一化,因为当窗口大小更改时,卷积层可以具有更多参数。