一、整体流程
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fsJVaTlp-1618623201144)(./1610615611043.png)]](/https://i-blog.csdnimg.cn/blog_migrate/b286e75f173765a53df7d34300cc3fd3.png)
二、feature encoder
理解Conv1d
nn.Conv1d(in_channels=5, out_channels=20, kernel_size=3, stride=2)
假设输入input=(batch, in_channels, in_len)
- batch=1
- in_channels=5,对应向量大小,比如word embedding
- in_len=10,对应word的个数
cnn内部kernel=(in_channels, kernel_size)=(5,3),相当于对(5,10)的输入,使用卷积核(5,3)、步长为2进行卷积,最后一个kernel的输出为(1,(10-3)/2+1)=(1,4),最后所有的输出为(batch, out_channels, out_len)=(1,20,4)。当前CNN层的out_channels作为下一层CNN的in_channels。实际的卷积参数有out_channels*(in_channels/groups)*kernel_size
结构解析
(feature_extractor): ConvFeatureExtractionModel(
(conv_layers): ModuleList(
(0): Sequential(
(0): Conv1d(1, 512, kernel_size=(10,), stride=(5,), bias=False)
(1): Dropout(p=0.0, inplace=False)
(2): Fp32GroupNorm(512, 512, eps=1e-05, affine=True)
(3): GELU()
)
(1): Sequential(
(0): Conv1d(512, 512, kernel_size=(3,), stride=(2,), bias=False)
(1): Dropout(p=0.0, inplace=False)
(2): GELU()
)
(2): Sequential(
(0): Conv1d(512, 512, kernel_size=(3,), stride=(2,), bias=False)
(1): Dropout(p=0.0, inplace=False)
(2): GELU()
)
(3): Sequential(
(0): Conv1d(512, 512, kernel_size=(3,), stride=(2,), bias=False)
(1): Dropout(p=0.0, inplace=False)
(2): GELU()
)
(4): Sequential(
(0): Conv1d(512, 512, kernel_size

本文详细介绍了使用卷积神经网络进行语音特征提取的过程,并探讨了如何通过量化技术将连续特征转换为离散值,以及相应的损失函数设计。
wav2vec 2.0原理剖析&spm=1001.2101.3001.5002&articleId=115787729&d=1&t=3&u=484e323f33854e398599253c4feaaf52)
3万+

被折叠的 条评论
为什么被折叠?



