LHY2021-HW04

任务:利用selfatt实现听一段语音,给出说话人,即听音分类

思路:音频序列做self-att信息融合,然后将样本序列平均得到mean vector用来分类

Path(data_dir) / "mapping.json"

json object要求:使用{},是key-value pairs,key必须双引号str

将json object转化为python格式时就变成了python dict

json string是字符串形式的json object,使用json.loads(),json文件使用json.load()

准备dataset:取所有演讲人语音段的长maxlen部分(可能有的语音片段不够长)

dataset[0]:第0个演讲者的第1段音频,dataset[1]:第0个演讲者的第2段音频....dataset[]:所有演讲者的所有音频  (音频,speaker id)

一句话:就是把所有音频都听一遍,不过音频有最大长度,dataloader输出的是pad后的batch

  lengths = [trainlen, len(dataset) - trainlen]

  trainset, validset = random_split(dataset, lengths)

dataloader只是把dataset中的样本堆叠起来,如果想自定义从dataset中的样本到batch的行为需要使用collate_fn

自定义collate_fn(batch)#batch是dataset[0],[1]这些东西组成的list

mel, speaker = zip(*batch)#将batch list解包,mel是batch中的tensor叠一起形成的tuple,speaker是id叠一起的tuple#mel: (tensor1,tensor2,tensor3....tensor_batchsize)

torch定义tensor的时候不区分(),[],即torch.LongTensor((1,2,3))没有任何问题

pad_sequence:接收多个样本(sequence_length, feature_dim)的tensor 的list,其中不同tensor的 sequence_length 可能不同,pad_sequence 会对齐 sequence_length,并在较短的张量后面填充 0,使得所有张量在 sequence_length 维度上具有相同的长度。

(就是把不同时间长度的样本拼成一个batch,要求一样长)        延长,结合

在多个batch/1个epoch的基础上进行validation测试模型,在多次validation后保存最好的val结果对应的model_state ,即ckpt

(1)是int,(1,)才是tuple

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值