Kaldi的nnet2 Component

FixedAffineComponent:类 LDA-like 的非相关转换,由标准的 weight matrix plus bias 组成(即Wx+b),通过标准的 stochastic gradient descent(非minibatch SGD?) 训练而来,使用 global learning rate

AffineComponentPreconditionedOnline:为 FixedAffineComponent 的一种提炼,训练过程中不仅使用global learning rate,还使用 matrix-valued learning rate(矩阵形式的学习率)来预处理梯度下降。参见 dnn2_preconditioning。

PnormComponent:为非线性,传统的神经网络模型中使用 TanhComponent

NormalizeComponent:用于稳定训练 p-norm 网络,它是固定的,非可训练,非线性的。它不是在个别 individual activations(即个别结点的激活) 上起作用,而是对单帧的整个 vector 起作用,重新使它们单位标准化。

SoftmaxComponent:为最终的非线性特征,便于输出标准概率

SpliceComponent: 定义了完成 feature-frame-splicing 的窗口尺寸

FixedAffineComponent:类 LDA-like 的非相关转换,由标准的 weight matrix plus bias 组成(即Wx+b),通过标准的 stochastic gradient descent(非minibatch SGD?) 训练而来,使用 global learning rate

AffineComponentPreconditionedOnline:为 FixedAffineComponent 的一种提炼,训练过程中不仅使用global learning rate,还使用 matrix-valued learning rate(矩阵形式的学习率)来预处理梯度下降。参见 dnn2_preconditioning。

PnormComponent:为非线性,传统的神经网络模型中使用 TanhComponent

NormalizeComponent:用于稳定训练 p-norm 网络,它是固定的,非可训练,非线性的。它不是在个别 individual activations(即个别结点的激活) 上起作用,而是对单帧的整个 vector 起作用,重新使它们单位标准化。

SoftmaxComponent:为最终的非线性特征,便于输出标准概率

  • SigmoidComponent

    • dim
  • TanhComponent

    • dim
  • PowerComponent

    • power
    • dim
    • input-dim
  • SoftmaxComponent

    • 与目标训练集无关
    • dim
  • LogSoftmaxComponent

    • dim
  • RectifiedLinearComponent

    • dim
  • NormalizeComponent

    • 归一化层,对输入进行归一化。网络训练过程中,输入特征是一个mini-batch,即包含多个特征向量的矩阵。归一化层会对这个mini-batch进行归一化。该组员只有一个参数,与目标训练集无关
    • 用于稳定训练 p-norm 网络,它是固定的,非可训练,非线性的。它不是在个别 individual activations(即个别结点的激活) 上起作用,而是对单帧的整个 vector 起作用,重新使它们单位标准化。
    • dim

      • 输入特征维度
  • SoftHingeComponent

    • dim
  • PnormComponent

    • 该组员只有3个参数,输入输出位数依赖于上下层,参数p是固定的,与目标训练集无关
    • 为非线性,传统的神经网络模型中使用 TanhComponent
    • output-dim

      • 输出维数一般是输入维数是十分之一,如:

        pnorm_input_dim=3000

        pnorm_output_dim=300

    • input-dim
    • p
  • MaxoutComponent

    • output-dim
    • input-dim
  • ScaleComponent

    • dim
    • scale
  • AffineComponent

    • learning-rate // optional.
    • 如果指定了matrix,则从matrix中读取仿射变换

      • matrix
      • input-dim // optional.必须与matrix匹配
      • output-dim // optional.必须与matrix匹配
    • 如果没有指定matrix,则新建一个仿射变换

      • param-stddev

        • parameter standard deviation,权值的标准差
        • 将参数的标注差限制在一个范围内,防止参数变化过大,该方法有利于防止over-fitting
      • bias-stddev

        • bias standard deviation,偏置的标准差
        • 将偏置的标准差限制在一个范围内,防止偏置变化过大,该方法有利于防止over-fitting
      • input-dim
      • output-dim
  • AffineComponentPreconditioned

    • learning-rate // optional.
    • alpha //Precondition
    • max-change //Precondition
    • 如果指定了matrix,则从matrix中读取仿射变换

      • matrix
      • input-dim // optional.必须与matrix匹配
      • output-dim // optional.必须与matrix匹配
    • 如果没有指定matrix,则新建一个仿射变换

      • param-stddev

        • parameter standard deviation,权值的标准差
        • 将参数的标注差限制在一个范围内,防止参数变化过大,该方法有利于防止over-fitting
      • bias-stddev

        • bias standard deviation,偏置的标准差
        • 将偏置的标准差限制在一个范围内,防止偏置变化过大,该方法有利于防止over-fitting
      • input-dim
      • output-dim
  • AffineComponentPreconditionedOnline

    • 全连接层的权重参数层,在kaldi的表示中,一层网络被拆分成权重层和后面的非线性变换层,其中权重层保存了网络的连接参数W,这些参数是可以改变的,而后面的非线性变换层(如下面的SoftmaxComponent)是固定的。
    • 为 FixedAffineComponent 的一种提炼,训练过程中不仅使用global learning rate,还使用 matrix-valued learning rate(矩阵形式的学习率)来预处理梯度下降。参见 dnn2_preconditioning
    • learning-rate // optional.
    • num-samples-history
    • alpha //Precondition
    • max-change-per-sample //Precondition
    • rank-in //Online
    • rank-out //Online
    • update-period //Online
    • 如果指定了matrix,则从matrix中读取仿射变换

      • matrix
      • input-dim // optional.必须与matrix匹配
      • output-dim // optional.必须与matrix匹配
    • 如果没有指定matrix,则新建一个仿射变换

      • param-stddev

        • parameter standard deviation,权值的标准差
        • 将参数的标注差限制在一个范围内,防止参数变化过大,该方法有利于防止over-fitting
      • bias-stddev

        • bias standard deviation,偏置的标准差
        • 将偏置的标准差限制在一个范围内,防止偏置变化过大,该方法有利于防止over-fitting
      • input-dim
      • output-dim
  • SumGroupComponent

    • sizes
  • BlockAffineComponent

    • learning-rate // optional.
    • input-dim
    • output-dim
    • num-blocks
    • param-stddev

      • parameter standard deviation,权值的标准差
      • 将参数的标注差限制在一个范围内,防止参数变化过大,该方法有利于防止over-fitting
    • bias-stddev

      • bias standard deviation,偏置的标准差
      • 将偏置的标准差限制在一个范围内,防止偏置变化过大,该方法有利于防止over-fitting
  • BlockAffineComponentPreconditioned

    • learning-rate // optional.
    • alpha //Precondition
    • input-dim
    • output-dim
    • num-blocks
    • param-stddev

      • parameter standard deviation,权值的标准差
      • 将参数的标注差限制在一个范围内,防止参数变化过大,该方法有利于防止over-fitting
    • bias-stddev

      • bias standard deviation,偏置的标准差
      • 将偏置的标准差限制在一个范围内,防止偏置变化过大,该方法有利于防止over-fitting
  • PermuteComponent

    • dim
  • DctComponent

    • dim
    • dct-dim
    • reorder
    • dct-keep-dim
  • FixedLinearComponent

    • matrix
  • FixedAffineComponent

    • 类 LDA-like 的非相关转换,由标准的 weight matrix plus bias 组成(即Wx+b),通过标准的 stochastic gradient descent(非minibatch SGD?) 训练而来,使用 global learning rate
    • matrix
  • FixedScaleComponent

    • 固定激活重调组员
    • 该组员位于SoftmaxComponent之前,维数与SoftmaxComponent相同,都是Senone的个数,该组员的参数是一个先验概率向量,其中第i个元素是第i个Senone在所有对齐($alidir/ali.*.gz)中出现的概率(Senone i出现次数/所有Senone所有出现次数)
    • scales,先验概率参数,需要从对齐($alidir/ali.*.gz)和模型($alidir/final.mdl)中获取
  • FixedBiasComponent

    • bias
  • SpliceComponent

    • 对输入特征进行左右展开,目的是为了让网络能够获取到帧间特征的关联性。例如我要识别当前帧是哪个triphone,我可以将当前帧之前5帧和当前帧以后5帧一起构成一个由11个帧组成的特征作为网络输入。
    • 定义了完成 feature-frame-splicing 的窗口尺寸
    • input-dim
    • context
    • left-context
    • right-context
    • const-component-dim = 0
  • SpliceMaxComponent

    • dim
    • context
    • left-context
    • right-context
  • DropoutComponent

    • dim
    • dropout-proportion
    • dropout-scale
  • AdditiveNoiseComponent

    • dim
    • stddev
  • Convolutional1dComponent

    • learning-rate
    • appended-conv
    • patch-dim

      • 卷积核的大小(维度)
    • patch-step = 1

      • 卷积核的每次步进大小,若大于patch-dim,则卷积运算没有重叠部分。
    • patch-stride

      • 卷积层会将输入向量特征转换成二维矩阵(类似于图像)进行卷积,该值确定了二维矩阵的行数,同时,卷积核也受该值的影响。
      • 以kaldi提供核心代码为例:
      • 第一个卷积层输入是一个36*3*11的一维特征向量,令该值等于fbank不包含差分特征的维度(即36),则输入特征向量可转换成一个36*33的特征矩阵,再利用卷积核(7*33)进行卷积。
      • 第二个卷积层的输入是池化层的输出,令该值等于输入的维度,则转换成的特征矩阵仍然是原来的向量。
    • 如果指定了matrix,则从matrix中读取仿射变换

      • matrix
      • input-dim

        • optional.必须与matrix匹配
      • output-dim

        • optional.必须与matrix匹配
    • 如果没有指定matrix,则新建一个仿射变换

      • param-stddev

        • parameter standard deviation,权值的标准差
        • 将参数的标注差限制在一个范围内,防止参数变化过大,该方法有利于防止over-fitting
      • bias-stddev

        • bias standard deviation,偏置的标准差
        • 将偏置的标准差限制在一个范围内,防止偏置变化过大,该方法有利于防止over-fitting
      • input-dim
      • output-dim
    • // propagation function
    • /*
    • In Convolution1dComponent, filter is defined $num-filters x $filter-dim,
    • and bias vector B is defined by length $num-filters. The propatation is
    • Y = X o A‘ + B
    • where "o" is executing matrix-matrix convolution, which consists of a group
    • of vector-matrix convolutions.
    • For instance, the convolution of X(t) and the i-th filter A(i) is
    • Y(t,i) = X(t) o A‘(i) + B(i)
    • The convolution used here is valid convolution. Meaning that the
    • output of M o N is of dim |M| - |N| + 1, assuming M is not shorter then N.
    • By default, input is arranged by
    • x (time), y (channel), z(frequency)
    • and output is arranged by
    • x (time), y (frequency), z(channel).
    • When appending convolutional1dcomponent, appended_conv_ should be
    • set ture for the appended convolutional1dcomponent.
    • */
  • MaxpoolingComponent

    • 池化层Component,该层会对卷积的特征进行最大化池化,即在一个范围内(池化面积)从同一个卷积核的输出选取最大的一个作为下一层的输入,池化核不重叠。池化的好处除了能够降维以外,更重要的一点是能够去除输入特征中的一些扰动。
    • input-dim
    • output-dim
    • pool-size

      • 池化面积
    • pool-stride

      • 池化范围,此处与卷积层相同,会将向量转换成矩阵进行处理。
    • /*
    • Input and output of maxpooling component is arranged as
    • x (time), y (frequency), z (channel)
    • for efficient pooling.
    • */
时间: 2024-07-28 21:29:11

Kaldi的nnet2 Component的相关文章

kaldi的TIMIT实例三

============================================================================ MMI + SGMM2 Training & Decoding ============================================================================ steps/align_sgmm2.sh --nj 30 --cmd run.pl --mem 4G --transform-d

Kaldi语料的两种切分/组织方式及其处理

text中每一个文本段由一个音频索引(indexed by utterance) 使用该方式的egs:librispeech.timit.thchs30.atc_en.atc_cn 语料的组织形式为: 一个音频(包含一个语句)对应一个文本(包含一个文本段) 或 一个音频(包含一个语句)对应一个文本(包含多个文本段)中的一个文本段 text中每一个文本段由一个时间片索引(indexed by segment) 使用该方式的egs: tedlium.atc0_comp_LDC94S14A 时间片由s

在visual studio 2013中编译语音识别库kaldi

在visual studio 2013中编译kaldi的主要困难的地方在于正确编译kaldi的依赖库,主要是:openfst,ATLAS, pthreadVC2,其中又属ATLAS最难编译,因此,为求整个编译逻辑清晰简洁,在此将忽略kaldi所有依赖库的编译,如果有时间,我会直接提供其所依赖的库. 编译环境: 操作系统:windows8 (推荐) 编译工具:visual studio2013 其他:要安装完整的CygWin环境 编译步骤: 新建解决方案:打开visual studio 2013,

Kaldi中的L2正则化

steps/nnet3/train_dnn.py --l2-regularize-factor 影响模型参数的l2正则化强度的因子.要进行l2正则化,主要方法是在配置文件中使用'l2-regularize'进行配置.l2正则化因子将乘以组件中的l2正则化值,并且可用于通过模型平均化以校正与并行化带来的影响. (float,默认值= 1) src/nnet3/nnet-utils.cc:2030 void ApplyL2Regularization(const Nnet &nnet, BaseFl

我们基于kaldi开发的嵌入式语音识别系统升级成深度学习啦

先前的文章<三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的>说我们花了不到三个月的时间搭了一个基于kaldi的嵌入式语音识别系统,不过它是基于传统的GMM-HMM的,是给我们练手用的,通过搭这个系统我们累积了一定的语音识别领域的经验,接下来我们就要考虑做什么形态的产品了.语音识别可以分大词汇量连续语音识别(Large Vocabulary Continuous Speech Recognition, LVCSR)和关键词识别(Keyword Spotting, KWS)

Kaldi 语音识别基础教程

Kaldi 介绍 Kaldi 是由 C++ 编写的语音识别工具,其目的在于为语音识别研究者提供一个研究和使用的平台. Kaldi 环境搭建 本文主要通过使用 Docker 和 Nvidia-docker 构建 Ubuntu 环境对 Kaldi 进行搭建.Docker 针对的是无 GPU 的环境,Nvidia-docker 针对的是需要使用 GPU 计算的环境,如果读者机器上存在 GPU 计算资源,请使用 Nvidia-docker,使用 Nvidia 官方提供的 CUDA 镜像,可以省去安装 C

【推介】TMS的控件之“TMS Unicode Component Pack”和“TMS Advanced Toolbars &amp; Menus”

TMS Unicode Component Pack是一款支持多语言的界面控件包,提供超过60种控件来为你的Delphi和C++Builder应用程序添加Unicode支持. 介绍: TMS Unicode Component Pack控制组件能让你在不终止Delphi.C++Builder或Windows 95/98/ME的情况下利用Windows NT/2000/XP/2003/Vista的Unicode功能开发应用程序.  注意:这些控制组件不会将Unicode功能添加到Windows 9

Applying GI PSU &quot;opatch auto&quot; fails with &quot;The opatch Component check failed&quot;

Applying GI PSU using "opatch auto" fails with "The opatch Component check failed" (文档 ID 1169036.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.3 and laterInformation in this document applies to any platform.***C

主成分分析(Principal Component Analysis,PCA

主成分分析(Principal Component Analysis,PCA)是将多个变量通过线性变换以选出较少几个重要变量的多元统计分析方法. 原理:在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的信息较多.在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠.主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量