「原作者へ」
連絡先を存じ上げませんでしたので、不本意ながら無断で翻訳しました。
正式に翻訳を許可されたいです。
gogyzzz@gmail.comでご連絡ください。
아래 포스트를 번역한 것입니다.
http://work-in-progress.hatenablog.com/entry/2018/07/15/121825
nnet2 학습의 흐름을 따라가보자.
이번엔 activation 함수로 「tanh」을 사용한 「nnet4c」을 대상으로 하였다.
${KALDIROOT}/egs/rm/s5/local/nnet2/run4c.sh
# for CPU only (with --use-gpu false).
steps/nnet2/train_tanh_fast.sh \
--stage -10 \
--minibatch-size 128 \
--num-epochs 20 \
--add-layers-period 1 \
--num-hidden-layers 2 \
--mix-up 4000 \
--initial-learning-rate 0.02 \
--final-learning-rate 0.004 \
--hidden-layer-dim 375 \
data/train \ # <data>
data/lang \ # <lang>
exp/tri3b_ali \ # <ali-dir>
exp/nnet4c_manual # <exp-dir>
내부 처리의 확인
stage: -4
steps/nnet2/get_lda.sh \
--transform-dir exp/tri3b_ali \
--splice-width 4 \
data/train \
data/lang \
exp/tri3b_ali \
exp/nnet4c
stage: -3
학습 데이터를 "validation"용과 "training"용으로 나누자.
steps/nnet2/get_egs.sh \
--transform-dir exp/tri3b_ali \
--splice-width 4 \
--stage 0 \
data/train \
data/lang \
exp/tri3b_ali \
exp/nnet4c
stage: -2
초기 모델을 생성
nnet-am-init \
exp/tri3b_ali/tree \
data/lang/topo \
'nnet-init exp/nnet4c/nnet.config -|' \
exp/nnet4c/0.mdl
==>모델의 Component수는 「6」
Splice / FixedAffine / AffinePre / Tanh / AffinePre / Softmax
"AffinePre"는 "AffineComponentPreconditionedOnline"의 약어
stage: -1
transition probabilities(전이 확률)의 업데이트
nnet-train-transitions \
exp/nnet4c/0.mdl \
'ark:gunzip -c exp/tri3b_ali/ali.*.gz|' \
exp/nnet4c/0.mdl
여기서 loop를 한다.
loop 횟수는 「25」($numepochs + $numepochs_extra)。
- 카운터가 1일때 hidden layer를 추가
==> 모델의 Component수가 「8」이 된다("Tanh"와 "AffinePre"을 추가)
Splice / FixedAffine / AffinePre / Tanh / AffinePre / Tanh / AffinePre / Softmax
카운터가 「13」일 때 mixup
==> 모델의 Component 수가 「9」가 된다("SumGroup"을 추가)
plaintext Splice / Fixed Affine / AffinePre / Tanh / AffinePre / Tanh / AffinePre / Softmax / SumGroup
loop의 각 단계에서 하고 있는 것을 정리하면 아래와 같다.
![](https://cdn-ak.f.st-hatena.com/images/fotolife/i/ichou1/20180715/20180715130237.png)
mixup 후의 모델을 사용하여 「final.mdl」을 생성한다.
bash
nnet-combine-fast \
exp/nnet4c/14.mdl \
exp/nnet4c/15.mdl \
댓글 없음:
댓글 쓰기