[ASR] change default initializer to kaiming_uniform by Jackwaterveg · Pull Request #1577 · PaddlePaddle/PaddleSpeech (original) (raw)
conformer 有 4 种 带参数的 API。
- conv 类型。包含 conv1D,conv2D。 torch 使用 kaming_uniform 初始化 (weight 和 bias 都是)
- linear 类型 torch 使用 kaming_uniform 初始化 (weight 和 bias 都是)
- layernorm 和 batchnorm torch 使用 constant 初始化 (weight 1, bias 0)
- nn.Embedding torch 使用 normal 初始化
类型 1 和 2 没有默认对齐:
- conv paddle使用的是:weight 用 kaimingNormal, bias 使用 0
- linear paddle使用的是:weight 用 XaiverUniform , bias 使用 0
本 PR 对齐了 wenet 的 conformer 初始化。 另外,paddle 的 kaiming_uniform 和 torch的 kaiming_uniform 没有对齐,所以对API 进行了 hack,从而实现对齐。
目前使用aishell数据集,在 dist_sampler模式训练下,不使用speed_perturb, conformer 可以达到 4.88%。比原先 5.6 % 的结果提升了 0.72%的绝对 CER。和 wenet 不用 speed_perturb 得到的 4.81% 的结果只相差 0.07% (wenet 使用 speed_perturb 时结果为 4.61% )。
Fix #1575