nnet3-info 可以查看训练好的chain model 模型结构,如下:
注意点
- 两个output,是因为有两个目标函数,一个是基于线性的,一个是基于CE的,实际结果是两个结果的加权值。训练中反向传播的时候也是用的加权值。作用是预防训练训偏掉了。 multitask learning?
- 输入是40维fbank,lda层操作:首先做了一个扩帧到200维,然后做了lda,这里的lda并没有降维,只是起到了解相关的操作。输出仍然是200维。
- 参数计算:
tdnn1 2001024 + 1024
tdnn2 20481024 + 1024
tdnn3 20481024 + 1024
tdnn4 20481024 + 1024
tdnn5 20481024 + 1024
output.affine component (10241024 + 1024)+ (10246508 + 6508)
output-xent.affine component (10241024 + 1024)+ (1024*6508 + 6508)
所有参数加起来正好等于最前面的24039128
Reference
http://kaldi-asr.org/doc/index.html
https://www.danielpovey.com/files/2015_interspeech_multisplice.pdf