基础算法:BN与LN算法区别

网址:https://blog.csdn.net/Miracle_520/article/details/105429456?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162814815816780271581681%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162814815816780271581681&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-105429456.first_rank_v2_pc_rank_v29&utm_term=BN%E4%B8%8ELN%E7%AE%97%E6%B3%95%E5%8D%B4%E5%88%AB&spm=1018.2226.3001.4187

BN算法有一个很大的缺点:在比较大的batchsize情况下,才可以合理的估计训练数据的均值和方差,这导致内存很可能不够用,同时也很难运用在训练数据长度不同的RNN模型中。

原因:因为BN算法在计算的过程中方差和均值是在一个batch上的,所以如果太小就没有说明性。

LN算法有一个优势,不需要批训练,在单条数据内部就能归一化。

对于数据x∈ℝN×××,LN对每个样本的C,H,W维度上的数据求均值和标准差,保留N维度

=1CHWc=1Ch=1=1h

=1CHWc=1Ch=1=1(h−)2+∈基础算法:BN与LN算法区别_第1张图片

LN中同层神经元输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差;

BN中则针对不同神经元输入计算均值和方差,同一个batch中的输入拥有相同的均值和方差。 所以,LN不依赖于batch的大小和输入sequence的深度,因此可以用于batchsize为1和RNN中对边长的输入sequence的normalize操作。

你可能感兴趣的:(算法,深度学习,pytorch)