【声纹基础】TDNN怎么用的一维卷积?

代码:https://github.com/DURUII/Course-Voiceprint-Repo-1.0

时延神经网络(TDNNs)常用于声纹识别领域,例如著名的X-VECTOR基础结构就是TDNNs;它可以视作一维卷积神经网络1(1-d CNNs),甚至有人认为TDNNs是CNNs/LeNet-5的早期版本。

计算机视觉盛行的如今,数字图像处理中二维卷积(空域滤波/模版运算/互相关运算2)对于我们而言也不再陌生,无非就是中心数值等于按元素相乘后再相加嘛。

可是,到底如何理解一维卷积?它和二维卷积又有什么联系?
不妨通过实验,一探究竟。

单输入通道/单输出通道

预期结果

首先,我们暂时忽略通道。假定输入为 [ 1 , 2 , − 1 , 1 , − 3 ] [1, 2, -1, 1, -3] [1,2,1,1,3],核函数为 [ 1 , 0 , − 1 ] [1, 0, -1] [1,0,1](卷积核是一维的,移动方向也自然是一维的),如果卷积核在输入向量上移动,请问结果是多少呢?可以看看我有没有算错。请添加图片描述
顺带一提,这里输入是一行五列的矩阵。不过换一个角度,我们也可以认为每次输入的是3帧信息,并按照某种权重加和汇入1个新帧。

这里的3是卷积核尺寸( k e r n e l   s i z e kernel\ size kernel size),从共享参数的全连接输入的角度说,3也是上下文所涵盖的范围, ( n − 1 , n + 1 )   o r   { n − 1 , n , n + 1 } (n-1,n+1) \ or \ \{n-1, n, n+1\} (n1,n+1) or { n1,n,n+1}

参考代码

# 输入
import torch.nn as nn
from torch.nn import Parameter
import torch.nn.functional as F
import torch
import numpy as np
import math

input = torch.tensor([
    [[1, 2, -1, 1, -3], ]
], dtype=torch.float)

conv1d = nn.Conv1d(in_channels=1,
                   out_channels=1,
                   kernel_size=3,
                   stride=1,
                   padding=0,
                   dilation=1,
                   bias=Fa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值