Kaldi nnet3的前向计算
- 根据任务,构建ComputationRequst
- 编译ComputationRequst,获取NnetComputation
std::shared_ptr<const NnetComputation> computation = compiler_.Compile(request);
- 创建计算——CreateComputation
compiler.CreateComputation(opts, computation);
- 从输出节点开始逐步向前计算依赖关系
ComputationGraphBuilder builder(nnet_, &graph_);
builder.Compute(*(requests_[segment]));
每次向前深入一层,并计算所有Cindexes的依赖关系
对其中的每个Cindex,若需要计算其依赖:
AddDependencies(cindex_id);
- 若为kDescriptor,desc.GetDependencies(index, &input_cindexes);
- 若为kComponent,component->GetInputIndexes(request_->misc_info, index, &input_indexes);
- 若为kDimRange,input_cindexes[0] = Cindex(node.u.node_index, index);
- 若为kInput,不需要依赖
- 检查是否所有的输出都是可计算的
if (!builder.AllOutputsAreComputable())
- 将数据与运算组织为计算步
对每个chunk中Cindexes根据不同网络层切分为phases,并以chunk为单位进行处理
steps_computer.ComputeForSegment(*(requests_[segment]),phases_per_segment[segment]);
将phases以节点为单位切分为sub-phases,并以sub-phases为单位进行处理
ProcessSubPhase(request, sub_phases[j]);
若sub-phases对于节点类型为:
component-node:ProcessComponentStep(sub_phase);
kSimpleComponent:除索引数-1外,将step复制为input_step
else:从graph_->dependencies[c]获取依赖并插入到input_step中
input-node:ProcessInputOrOutputStep(request, false, sub_phase);
output-node:ProcessInputOrOutputStep(request, true, sub_phase);
dim-range-node:ProcessDimRangeSubPhase(sub_phase);
- 优化计算——Optimize
Optimize(opt_config_, nnet_,
MaxOutputTimeInRequest(request),
computation);
- 根据NnetComputation构建NnetComputer
NnetComputer computer(opts_.compute_config, *computation,
nnet_, nnet_to_update);
- 运行NnetComputer
computer.Run();
对NnetComputation中所有Command迭代地运行
kPropagate:void *memo = component->Propagate(indexes, input, &output);
kBackprop:component->Backprop(debug_str.str(), indexes,
in_value, out_value, out_deriv,
memo, upd_component,
c.arg6 == 0 ? NULL : &in_deriv);
...
- 从NnetComputer获取输出
computer.GetOutputDestructive("output", &cu_output);
Kaldi nnet3的前向计算的更多相关文章
- Faster-rnnlm代码分析3 - EvaluateLM(前向计算ForwardPropagate)
先采用一个简单的输入文本做测试 [root@cq01-forum-rstree01.cq01.baidu.com rnnlm]# pwd /home/users/chenghuige/rsc/app/ ...
- Xvector in Kaldi nnet3
Xvector nnet Training of Xvector nnet Xvector nnet in Kaldi Statistics Extraction Layer in Kaldi ...
- BP原理 - 前向计算与反向传播实例
Outline 前向计算 反向传播 很多事情不是需要聪明一点,而是需要耐心一点,踏下心来认真看真的很简单的. 假设有这样一个网络层: 第一层是输入层,包含两个神经元i1 i2和截距b1: 第二层是隐含 ...
- [源码解析] PyTorch 流水线并行实现 (4)--前向计算
[源码解析] PyTorch 流水线并行实现 (4)--前向计算 目录 [源码解析] PyTorch 流水线并行实现 (4)--前向计算 0x00 摘要 0x01 论文 1.1 引论 1.1.1 数据 ...
- Kaldi nnet3的fastlstm与标准LSTM
标准LSTM: 与标准LSTM相比,Kaldi的fastlstm对相同或类似的矩阵运算进行了合并. # Component specific to 'projected ...
- 关于入门深度学习mnist数据集前向计算的记录
import osimport lr as lrimport tensorflow as tffrom pyspark.sql.functions import stddevfrom tensorfl ...
- [图解tensorflow源码] MatMul 矩阵乘积运算 (前向计算,反向梯度计算)
- [tensorflow源码分析] Conv2d卷积运算 (前向计算,反向梯度计算)
- 对Kaldi nnet3进行奇异值分解(SVD)以减小模型大小
用处 基于SVD实现模型压缩以适配低功耗平台 根据nnet3bin/nnet3-copy,nnet3-copy或nnet3-am-copy的"--edits-config" ...
随机推荐
- HashMap线程不安全的体现
前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密. 1.jdk1.7中的HashMap 在jdk1.8中对HashM ...
- centos7下kubernetes(16。kubernetes-滚动更新)
滚动更新:一次只更新一小部分副本,成功后,在更新更多的副本,最终完成所有副本的更新. 滚动更新的最大好处是零停机,整个更新过程始终有副本在运行,从而保证了业余的连续性 下面部署三个副本的应用,出事镜像 ...
- 洛谷 P5020 货币系统
题目描述 在网友的国度中共有$ n $种不同面额的货币,第 i种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为\(n\).面额数组为 \(a[1..n]\ ...
- Mybatis实现高级映射一对一、一对多查询
终于把论文写得差不多了,系统也不急着完成,可以抽出点时间来完成这个系列的博客了.在写本博客之前我是惶恐不安的,高级映射一贯是持久层框架里的重中之重,小到自己开发小系统,大到企业级开发,表的存在从来就不 ...
- Spring Boot2.0使用Spring Security
一.Spring Secutity简介 Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性 ...
- 面试必问Elasticsearch倒排索引原理
本文摘抄自我的微信公众号"程序员柯南",欢迎关注!原文阅读 倒排索引是目前搜索引擎公司对搜索引擎最常用的存储方式,也是搜索引擎的核心内容,在搜索引擎的实际应用中,有时需要按照关键字 ...
- UEFI和Legacy及UEFI+Legacy启动的区别
uefi和legacy是两种不同的引导方式,uefi是新式的BIOS,legacy是传统BIOS.你在UEFI模式下安装的系统,只能用UEFI模式引导:同理,如果你是在Legacy模式下安装的系统,也 ...
- 给hMailServer添加DKIM图文教程
https://www.hmailserver.org/viewtopic.php?f=4&t=12
- 基于MySQL的Activiti6引擎创建
整个activiti6的搭建都是在spring boot2之上的,首先贴一下pom: <dependencies> <!-- 这是activiti需要的最基本的核心引擎 --> ...
- H5的段落标签、图片标签、列表标签与链接标签
段落标签 (1)<p>段落标签</p> (2)<nobr>强制不换行标签,会出现滚动条</nobr> (3)<pre>保留原始排版标签< ...