kaldi-tdnn模型训练策略-pytorch实现

relu:RectifiedLinearComponent self-repair-scale=1e-05
affine:NaturalGradientAffineComponent max-change=0.75
norm:NormalizeComponent target-rms=1.0 add-log-stddev=false
隐层的输出规整为均方根为1.0:y^t y = D * target_rms^2
y_i = scale * x_i
scale = 1.0 / sqrt(x^t * x / (D * target_rms^2))

pytorch实现方法:
torch.nn.functional.normalize(input=x, p=2.0, dim=1, eps=1e-12)
input:输入
p: p-norm
dim: 指定进行normalize的维度
eps:最小分母,防止分母为0
操作:将x按照dim指定的维度除以p范数(默认p=2,为均方根)
kaldi-tdnn模型训练策略-pytorch实现_第1张图片

output: NaturalGradientAffineComponent max-change=1.5 param-stddev=0.0 bias-stddev=0.0
在这里插入图片描述
从官方文档介绍看,是以每个minibatch的参数变化的2-norm值不超过max-param-change参数值
max-param-change:为每个minibatch的全局参数矩阵的最大变化

learning_rate: kaldi 每一层的学习率保持一致

你可能感兴趣的:(pytorch,深度学习,语音识别)