kaldi 1d-CNN源码

僤鯓⒐⒋嵵緔 提交于 2019-12-03 04:07:08

CNN

nnet/nnet-convolutional-component.h

假设CNN相关参数如下

###输入相关参数
num_splice=3                                            #语音数据的左右context,此处左右一帧
path_stride=5                                           #一帧特征的维度
input_dim=path_stride*num_splice=15                     #输入特征的维度

###滤波器相关参数
num_filters=2                                           #滤波器个数
patch_dim=2                                             #滤波器在一帧特征上面的维度
filter_dim=num_splice*patch_dim=6                       #滤波器在3帧特征上的维度
patch_step=1                                            #patch移动的步长

###输出相关参数
num_patch=1 + (patch_stride - patch_dim) / patch_step=4 #每个滤波器在特征上面做卷积的次数(即输出个数)
output_dim=num_patch*num_filters=8                      #cnn的输出维度

###多帧并行的参数
frame_num=2                                             #一次计算特征的个数

PropagateFnc

首先将特征按照splice重新组织成vectorized_feature_patches,然后跟对应的filters做卷积
这里写图片描述
这里写图片描述

BackpropagateFnc

计算对输入的梯度(向后继续传播)
这里写图片描述

Update

计算对参数的梯度(用于参数更新)
这里写图片描述

Max-Pooling

在后向传递梯度的时候只在最大值对应的边传递,其他值的梯度为0.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!