轮迭代时验证集的日志:

log/compute_prob_valid.1000.log:

LOG (nnet3-chain-compute-prob[5.5.100-d66be]:PrintTotalStats():nnet-chain-diagnostics.cc:194) Overall log-probability for 'output-xent' is -2.14993 per frame, over 18230 frames.

LOG (nnet3-chain-compute-prob[5.5.100-d66be]:PrintTotalStats():nnet-chain-diagnostics.cc:194) Overall log-probability for 'output' is -0.238675 per frame, over 18230 frames.

其中的Overall log-probability是指,这次迭代(iteration)的平均损失函数的值。

 
 

对于chain,其损失函数为LF-MMI:

 
 

其中

 
 

nnet3/nnet-chain-diagnostics.cc

void NnetChainComputeProb::ProcessOutputs(const NnetChainExample &eg,

NnetComputer *computer) {

std::vector<NnetChainSupervision>::const_iterator iter = eg.outputs.begin(),

end = eg.outputs.end();

for (; iter != end; ++iter) {

BaseFloat tot_like, tot_l2_term, tot_weight;

//...

ComputeChainObjfAndDeriv(chain_config_, den_graph_,

sup.supervision, nnet_output,

&tot_like, &tot_l2_term, &tot_weight,

(nnet_config_.compute_deriv ? &nnet_output_deriv :

NULL), (use_xent ? &xent_deriv : NULL));

//...

ChainObjectiveInfo &totals = objf_info_[sup.name];

totals.tot_weight += tot_weight;

totals.tot_like += tot_like;

totals.tot_l2_term += tot_l2_term;

//...

}

}

 
 

void ComputeChainObjfAndDeriv(...){

*objf = num_logprob_weighted - den_logprob_weighted;

//supervision.weight:样本(egs)的权重,通常为1.0

//supervision.num_sequences:Supevision对象(由lattice或对齐生成)的数量,即FST的数量,或语句的数量

//supervision.frames_per_sequence:每个Supevision中的帧数

//weight即一个archive中的带权帧数

*weight = supervision.weight * supervision.num_sequences *

supervision.frames_per_sequence;

}

//似然即一个archive的平均对数似然

BaseFloat like = (info.tot_like / info.tot_weight),

//一个archive的平均L2正则化项

l2_term = (info.tot_l2_term / info.tot_weight),

//一个archive的平均准则函数值

tot_objf = like + l2_term;

 
 

由于MMI的目标是最大化互信息值,因此,需要对准则函数进行最大化,或对负准则函数进行最小化。

 
 

因此,以下日志中的"Overall log-probability"值越大越好。

log/compute_prob_valid.1000.log:

LOG (nnet3-chain-compute-prob[5.5.100-d66be]:PrintTotalStats():nnet-chain-diagnostics.cc:194) Overall log-probability for 'output-xent' is -2.14993 per frame, over 18230 frames.

LOG (nnet3-chain-compute-prob[5.5.100-d66be]:PrintTotalStats():nnet-chain-diagnostics.cc:194) Overall log-probability for 'output' is -0.238675 per frame, over 18230 frames.

 
 

Chain训练准则的计算的更多相关文章

  1. Java实现 蓝桥杯 算法训练 多阶乘计算

    试题 算法训练 多阶乘计算 问题描述 我们知道,阶乘n!表示n*(n-1)(n-2)-21, 类似的,可以定义多阶乘计算,例如:5!!=531,依次可以有n!..!(k个'!',可以简单表示为n(k) ...

  2. 蓝桥杯 算法训练 ALGO-156 表达式计算

    算法训练 表达式计算   时间限制:1.0s   内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输 ...

  3. UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)

    栈的练习,如此水题竟然做了两个小时... 题意:给出矩阵大小和矩阵的运算顺序,判断能否相乘并求运算量. 我的算法很简单:比如(((((DE)F)G)H)I),遇到 (就cnt累计加一,字母入栈,遇到) ...

  4. SSD训练网络参数计算

    一个预测层的网络结构如下所示: 可以看到,是由三个分支组成的,分别是"PriorBox"层,以及conf.loc的预测层,其中,conf与loc的预测层的参数是由PriorBox的 ...

  5. Kaldi中的Chain模型

    Chain模型的训练流程 链式模型的训练过程是MMI的无网格的版本,从音素级解码图生成HMM,对其使用前向后向算法,获得分母状态后验,通过类似的方式计算分子状态后验,但限于对应于转录的序列. 对于神经 ...

  6. SVM训练结果参数说明 训练参数说明 归一化加快速度和提升准确率 归一化还原

    原文:http://blog.sina.com.cn/s/blog_57a1cae80101bit5.html 举例说明 svmtrain -s 0 -?c 1000 -t 1 -g 1 -r 1 - ...

  7. 明风:分布式图计算的平台Spark GraphX 在淘宝的实践

    快刀初试:Spark GraphX在淘宝的实践 作者:明风 (本文由团队中梧苇和我一起撰写,并由团队中的林岳,岩岫,世仪等多人Review,发表于程序员的8月刊,由于篇幅原因,略作删减,本文为完整版) ...

  8. caffe中全卷积层和全连接层训练参数如何确定

    今天来仔细讲一下卷基层和全连接层训练参数个数如何确定的问题.我们以Mnist为例,首先贴出网络配置文件: name: "LeNet" layer { name: "mni ...

  9. 如何高效的通过BP算法来训练CNN

    < Neural Networks Tricks of the Trade.2nd>这本书是收录了1998-2012年在NN上面的一些技巧.原理.算法性文章,对于初学者或者是正在学习NN的 ...

随机推荐

  1. A1144. The Missing Number

    Given N integers, you are supposed to find the smallest positive integer that is NOT in the given li ...

  2. 终于解决了用JAVA写窗口程序在不同的windows界面下的显示保持一致。

    好像是两三年前的时候发现这个问题. 由于在windows经典界面与windows xp界面下,窗口的标题栏的高度是不一样的. 所以我们在用Java写GUI程序的时候,会遇到一个问题. 当我把一个JFr ...

  3. vue在body上面绑定enter事件

    mounted () { this.bodyListener = (e) => { if (e.keyCode === 13 && e.target === document.b ...

  4. 第十八节,TensorFlow中使用批量归一化(BN)

    在深度学习章节里,已经介绍了批量归一化的概念,详情请点击这里:第九节,改善深层神经网络:超参数调试.正则化以优化(下) 神经网络在进行训练时,主要是用来学习数据的分布规律,如果数据的训练部分和测试部分 ...

  5. mysql 删除用户

    select * FROM sys_user_role where user_id in( SELECT id FROM sys_user where login_name='17600311226' ...

  6. Windows下MySQL下载安装、配置与使用

    用过MySQL之后,不论容量的话,发现比其他两个(sql server .oracle)好用的多,一下子就喜欢上了.下面给那些还不知道怎么弄的童鞋们写下具体的方法步骤. (我这个写得有点太详细了,甚至 ...

  7. springboot启动报错Failed to configure a DataSource

    2018-11-21 19:43:12.076 WARN 5392 --- [ main] ConfigServletWebServerApplicationContext : Exception e ...

  8. java 可设置最大内存

    测试方法:在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息. 堆(Heap)和非堆(N ...

  9. cmd命令对java程序进行编译时出现:编码GBK的不可映射字符

    原因:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定JAVA源程序的编码格式,则java.exe首先获得我们才做系统默认采用的编码格式,也即在编译JAVA程序时,若我们不 ...

  10. Redis之主从复制

    定义:主机数据更新后根据配置策略,自动同步到备的Master/slave机制,Master以写为主,Slave以读为主. Tip:配从(从库)不配主(主库) 1.从库配置: slave of 主库IP ...