kaldi 1d-CNN源码

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.

后面的技术分享转移到微信公众号上面更新了,【欢迎扫码关注交流】

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值