Advanced features

Frame-weighted training

调用带选项的teps/nnet/train.sh:

--frame-weights <weights-rspecifier>

这里的<weights-rspecifier> 一般是表示每一帧权重的浮点型向量的ark文件。

  • the weights are used to scale gradients computed on single frames, which is useful in confidence-weighted semi-supervised training,
  • or weights can be used to mask-out frames we don't want to train with by generating vectors composed of weights 0, 1

Training with external targets

调用带选项的steps/nnet/train.sh:

--labels <posterior-rspecifier> --num-tgt <dim-output>

这里的ali-dirs和lang-dir变成虚设的目录。"" 是一个典型的存储后验概率的ark文件,和""是神经网络输出的数目。这里后验概率没有概率的意思,它就是一个表示目标的数据类型,和这个目录值可以为任意的浮点数。

当每一帧使用一个单独的标签来训练时(比如:the 1-hot encoding),你可以准备一个跟输入特征一样长度的整数向量的ark文件。 这个整数向量的元素对目标类的索引进行编码,如果神经网络的输出是这个索引,那么对应的目标值为1。这个整数向量可以使用ali-to-post.cc来转换为Posterior,和这个整数向量格式是非常简单的:

utt1 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 ... 9 9 9 utt2 0 0 0 0 0 3 3 3 3 3 3 2 2 2 2 ... 9 9 9

在多种非零目标的情况下,你可以使用ascii格式准备Posterior

  • 每一个非零的目标值是由一对来编码的,这里的int32是神经网络输出的索引(从0开始)和float是目标值
  • 每一帧(比如:datapoint)是由括号[ ... ]里的值表示的,我们可以看到 数据对级联如下

utt1 [ 0 0.9991834 64 0.0008166544 ] [ 1 1 ] [ 0 1 ] [ 111 1 ] [ 0 1 ] [ 63 1 ] [ 0 1 ] [ 135 1 ] [ 0 1 ] [ 162 1 ] [ 0 1 ] [ 1 0.9937257 12 0.006274292 ] [ 0 1 ]

在自编码的例子里egs/timit/s5/local/nnet/run_autoencoder.sh,外部的目标被使用。

Mean-Square-Error training

调用带选项的steps/nnet/train.sh:

--train-tool "nnet-train-frmshuff --objective-function=mse" --proto-opts "--no-softmax --activation-type=<Tanh> --hid-bias-mean=0.0 --hid-bias-range=1.0"

最小均方误差训练是用在自编码的例子里,在脚本egs/timit/s5/local/nnet/run_autoencoder.sh

Training with tanh

调用带选项的steps/nnet/train.sh:

--proto-opts "--activation-type=<Tanh> --hid-bias-mean=0.0 --hid-bias-range=1.0"

tanh的最佳学习率一般小于sigmoid,通常最佳为0.00001。

Conversion of a DNN model between nnet1 -> nnet2

在Kaldi中,有二个DNN的例子,一个是Karel's (本页)和Dan's Dan's DNN implementation。这两个使用不兼容的DNN格式,这里是把Karel's DNN 转换为Dan的格式。

  • 模型转换的样例脚本为:egs/rm/s5/local/run_dnn_convert_nnet2.sh,
  • 模型转换的脚本为: steps/nnet2/convert_nnet1_to_nnet2.sh, 它是通过调用模型转换代码来实现的:nnet1-to-raw-nnet.cc
  • 支持成分的列表可以看ConvertComponent

results matching ""

    No results matching ""