Chain训练准则的计算
轮迭代时验证集的日志:
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训练准则的计算的更多相关文章
- Java实现 蓝桥杯 算法训练 多阶乘计算
试题 算法训练 多阶乘计算 问题描述 我们知道,阶乘n!表示n*(n-1)(n-2)-21, 类似的,可以定义多阶乘计算,例如:5!!=531,依次可以有n!..!(k个'!',可以简单表示为n(k) ...
- 蓝桥杯 算法训练 ALGO-156 表达式计算
算法训练 表达式计算 时间限制:1.0s 内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输 ...
- UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)
栈的练习,如此水题竟然做了两个小时... 题意:给出矩阵大小和矩阵的运算顺序,判断能否相乘并求运算量. 我的算法很简单:比如(((((DE)F)G)H)I),遇到 (就cnt累计加一,字母入栈,遇到) ...
- SSD训练网络参数计算
一个预测层的网络结构如下所示: 可以看到,是由三个分支组成的,分别是"PriorBox"层,以及conf.loc的预测层,其中,conf与loc的预测层的参数是由PriorBox的 ...
- Kaldi中的Chain模型
Chain模型的训练流程 链式模型的训练过程是MMI的无网格的版本,从音素级解码图生成HMM,对其使用前向后向算法,获得分母状态后验,通过类似的方式计算分子状态后验,但限于对应于转录的序列. 对于神经 ...
- SVM训练结果参数说明 训练参数说明 归一化加快速度和提升准确率 归一化还原
原文:http://blog.sina.com.cn/s/blog_57a1cae80101bit5.html 举例说明 svmtrain -s 0 -?c 1000 -t 1 -g 1 -r 1 - ...
- 明风:分布式图计算的平台Spark GraphX 在淘宝的实践
快刀初试:Spark GraphX在淘宝的实践 作者:明风 (本文由团队中梧苇和我一起撰写,并由团队中的林岳,岩岫,世仪等多人Review,发表于程序员的8月刊,由于篇幅原因,略作删减,本文为完整版) ...
- caffe中全卷积层和全连接层训练参数如何确定
今天来仔细讲一下卷基层和全连接层训练参数个数如何确定的问题.我们以Mnist为例,首先贴出网络配置文件: name: "LeNet" layer { name: "mni ...
- 如何高效的通过BP算法来训练CNN
< Neural Networks Tricks of the Trade.2nd>这本书是收录了1998-2012年在NN上面的一些技巧.原理.算法性文章,对于初学者或者是正在学习NN的 ...
随机推荐
- gei 操作
git --version 查看版本号 进入项目文件 上传账号的用户名git config --global user.name "牛星宇" 上传账号的邮箱git config - ...
- 解决samtools报错:[main_samview] region "chr2:20,100,000-20,200,000" specifies an unknown reference name. Continue anyway.
根据Samtool 的manual文档介绍,如果想搜索bam文件的某段区域,需要用到以下命令: samtools view aln.sorted.bam chr2:20,100,000-20,200, ...
- springcloud的turbine集成zookeeper
1.turbine监控界面显示一直是loading的状态,如何解决 http://blog.didispace.com/spring-cloud-tips-4/ 2.通过追踪turbine的依赖可以看 ...
- 22. Generate Parentheses(ML)
22. Generate Parentheses . Generate Parentheses Given n pairs of parentheses, write a function to ge ...
- HTTP协议相关原理
HTTP 的全称是 Hyper Text Transfer Protocol,中文名叫做超文本传输协议 HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证传送高效而准确地传送超文本 ...
- Oracle基础--创建临时表空间/表空间/创建用户/授权
总结:创建用户一般分四步: 第一步:创建临时表空间(创建用户之前要创建"临时表空间",若不创建则默认的临时表空间为temp.) SQL> CREATE TEMPORARY T ...
- win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理?
win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理? 摘录自:https://blog.csdn.net/haijing1995/article/details/664 ...
- redis做session会话共享
项目中需要两个不同的web项目互相访问,用户对象为同一个User.决定用Redis来存储用户对象信息...ok,环境搭建开始: 1.pom.xml引入Redis依赖的jar: <!-- jedi ...
- C#设计模式(13)——享元模式
1.享元模式介绍 在软件开发中我们经常遇到多次使用相似或者相同对象的情况,如果每次使用这个对象都去new一个新的实例会很浪费资源.这时候很多人会想到前边介绍过的一个设计模式:原型模式,原型模式通过拷贝 ...
- shop++之language
shop++商城改造此次感悟最深的就是封装.有些东西要整明白就得花点时间. 代码中经常用到这种,我照葫芦画瓢竟然没有用. 天啦,竟然是自己没有定义,还以为是什么高级自动的玩意呢? 文件结构如下: 后面 ...