首页 > 其他分享 >李宏毅2022机器学习HW4 Speaker Identification下

李宏毅2022机器学习HW4 Speaker Identification下

时间:2024-03-02 17:26:11浏览次数:30  
标签:李宏毅 self batch length Speaker 2022 model size out

Task

Sample Baseline模型介绍

class Classifier(nn.Module):
	def __init__(self, d_model=80, n_spks=600, dropout=0.1):
		super().__init__()
		# Project the dimension of features from that of input into d_model.
		self.prenet = nn.Linear(40, d_model)

		# transformer
		self.encoder_layer = nn.TransformerEncoderLayer(
			d_model=d_model, dim_feedforward=256, nhead=2
		)
		self.encoder = self.encoder_layer

		self.pred_layer = nn.Sequential(
			nn.Linear(d_model, d_model),
			nn.ReLU(),
			nn.Linear(d_model, n_spks),
		)

	def forward(self, mels):
		"""
		args:
			mels: (batch size, length, 40)
		return:
			out: (batch size, n_spks)
		"""
		# out: (batch size, length, d_model)
		out = self.prenet(mels)
		# out: (length, batch size, d_model)
		out = out.permute(1, 0, 2)
		# The encoder layer expect features in the shape of (length, batch size, d_model).
		out = self.encoder(out)
		# out: (batch size, length, d_model)
		out = out.transpose(0, 1)
		# mean pooling
		stats = out.mean(dim=1)
		# out: (batch, n_spks)
		out = self.pred_layer(stats)
		return out

模型开始对特征进行了升维以增强表示能力,随后通过transformer的encoder对数据进一步编码(未使用decoder),到这一步就包含了原来没有包含的注意力信息,以英文Sequence为例,如果原来的Sequence中每个单词是独立编码的是没有任何关联的,那么经过这一步之后,每一个单词的编码都是由其他单词编码的叠加而成。最后通过pred_layer进行预测(当然在此之前进行了一个mean pooling,这个下面会讲)。

在模型的前向传播时,模型基本是安装前面定义的各层进行计算的,我们注意到在给encoder的输入时,维度的顺序为(length,batch_size, d_model),而不是(batch_size, length, d_model),实际上这是为了并行计算?
下图是batch_first时所对应的存储顺序

下图时length_first时所对应的存储顺序

在其他时序模型中,由于需要按序输入,因此直接拿到一个sequence没啥用,不如直接得到一批batch中的所有sequence中的第一个语音序列或单词,但是在transformer中应该不需要这样吧?

另外一个小细节是进行mean pooling

stats = out.mean(dim=1)

这一步是不必可少的,不然没法输入pred_layer,这里做mean的意思是把每个sequence的所有frame通过平均合并为一个frame,如下图所示

维度由batch_size\(\times\)length\(\times\)d_model变成了batch_size\(\times\)d_model

Medium Baseline

对于medium baseline,只需要调节视频中提示的地方进行修改即可,我的得分如下:

相关参数如下
d_model=120
4个encoder_layer的nhead=4

Strong Baseline

对于strong baseline,需要引入conformer架构,我的得分如下:

而conformer的引入需要注意以下几点:
引入(当然你也可以使用pip进行单独安装)

from torchaudio.models.conformer import Conformer

由于torchaudio中实现的conformer默认是batch_first,因此在代码中我们需要去掉下面两行

out = out.permute(1, 0, 2)
out = out.transpose(0, 1)

Boss Baseline

引入self-attention pooling和additive margin softmax后,准确率下降了。

标签:李宏毅,self,batch,length,Speaker,2022,model,size,out
From: https://www.cnblogs.com/hywang1211/p/18048618

相关文章

  • 李宏毅2022机器学习HW4 Speaker Identification上(Dataset &Self-Attention)
    Homework4Dataset介绍及处理Datasetintroduction训练数据集metadata.json包括speakers和n_mels,前者表示每个speaker所包含的多条语音信息(每条信息有一个路径feature_path和改条信息的长度mel_len或理解为frame数即可),后者表示滤波器数量,简单理解为特征数即可,由此可知每个.pt......
  • 【李宏毅机器学习2021】(四)Self-attention
    引入Self-attention前面学到的内容输入都是一个向量,假如输入是一排向量,又应如何处理。来看下有什么例子需要将一排向量输入模型:当输入是一排向量时,输出有三种类型:输入和输出的长度一样,每一个向量对应一个label,如词性标注、音标识别、节点特性(如会不会买某件商品)。一......
  • 蓝桥杯2022年第十三届省赛真题-技能升级(中)
    目录题目题解:暴力题解:优化题目题解:暴力思路:枚举每一个Ai,并一直减去Bi,直到小于零为止,即为该技能所能增加的点数的集合。将每一个选择存进res中,并排序选择前M大的技能点即可。#首先,a-b加入列表,循环a/b次;其次,对列表排序,取前M个数进行求和a,b=map(int,input().split())#读入......
  • 【专题】2022工业互联网平台发展指数报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33647这份报告合集是基于中国工业产业升级和智能制造的大背景而展开的。报告合集分析了工业互联网平台市场的发展阶段、平台玩家的产品和服务的底层逻辑以及变化趋势,并探讨了补贴减少、数据归属权之争、标准化与盈利模式、ChatGPT等因素对工业互联......
  • 【蔚来汽车】蔚来20220713第三题-旅游规划
    【蔚来汽车】蔚来20220713第三题-旅游规划牛牛对n个城市旅游情况进行了规划,已知每个城市有两种属性x和y,其中x表示去第i号城市的花费,y表示在第i号城市游玩后会得到的开心值。  现在牛牛希望从中挑选出一些城市去游玩,但挑选出的城市必须满足任意两个城市之间花费差......
  • national-olympiad-in-informatics-in-provinces-2022-travels
    NationalOlympiadinInformaticsinProvinces2022travels(有些时间点懒得回忆了,就不写具体时间了。)这次去广大附中考,要求提前\(3\)天到附近的酒店隔离。隔离酒店环境不错,比想象中好很多。服务也还可以,午饭晚饭都挺合我胃口,就是饭不够吃。和WaterAche一间房。这几天摆......
  • 蓝桥杯2022年第十三届省赛真题-矩形拼接
    目录题目分析代码题目分析情况1:三个矩形有一边相等。(完全匹配:4边)情况2:三个矩形中有前两个矩形的边等于第三个矩形的边,而且前两个矩形的另一条边相等。(完全匹配:4边)情况3:三个矩形中有前两个矩形的边等于第三个矩形的边,而且前两个矩形的另一条边不相等。(部分匹配:6边)......
  • 【李宏毅机器学习2021】(二)Tips for training
    这一节主要讲解机器学习、类神经网络训练不起来怎么办?讲解一些训练的tips。先来回顾下机器学习的步骤:接下来将介绍在机器学习过程中,遇到问题时如何判断原因并解决:在训练数据上Loss值很大ModelBias在训练数据上Loss值很大,有可能是发生了Model问题。问题原因:模型太......
  • 【李宏毅机器学习2021】(一)引入机器学习和深度学习
    引入机器学习MachineLearning概括来说就是LookingforFunction,即让机器具备找一个函数的能力这些函数显然非常复杂,要依靠机器自动找出该函数。随着要找的函数不同,机器学习有不同的类别:Regression,回归:函数输出的是数值。Classification,分类:函数从给定选项(类别)中选择一个......
  • 【C++】【OpenCV】Visual Studio 2022 配置OpenCV
    记录一下VisualStudio配置OpenCV过程以及出现的问题本机环境:1、Windows102、VisualStudio2022 配置步骤:1、下载OpenCV(Releases·opencv/opencv·GitHub)在GitHub上下载最新的版本 2、双击打开,然后选择路径后,点击Extract 3、等待提取完成后在VisualStudio中新......