CTC eesen 源代码阅读
- train-ctc-parallel.sh:用于训练CTC
train-ctc-parallel:
essen的ctc多句并行训练脚本
并行设置:
num_sequence = 5
1.打乱训练的数据的顺序
获得训练数据特征的长度输入到len.tmp文件并将其与原始feats.scp合并排序,并且每条训练数据的长度需要大于0。
feat-to-len scp:$data_tr/feats.scp ark,t:- | awk '{print $2}' > $dir/len.tmp
paste -d “ ” $data_tr/feats.scp $dir/len.tmp | sort -k3 -n - | awk -v m=$min_len '{if ($3 >=m){print $1 “ ” $2}}' > $dir/train.scp || exit 1;
2.feature_rspecifer与targets_respecifer
对特征进行cmvn后做差分(add-deltas)
3.analyze-counts:
gunzip -c $dir/labels.tr.gz | awk '{line=$0;gsub(" "," 0 ",line);print line " 0";}' |\
analyze-counts --verbose=1 --binary=false ark:- $dir/label.counts >& dir/log/compute_label_counts.log || exit 1;
show phone counts 用于计算label的先验概率
verbose:设置为1显示label的出现频率与柱状图
4.训练中的退火处理:
if [ 1 == $halving]; then
learn_rate=$(awk "BEGIN{print($learn_rate*$halving_factor)}")
fi