关键词短语生成的无监督方法09——my_dataloader.py

本文介绍了自定义`Dataset`和`DataLoader`在深度学习中的应用,特别是针对NLP任务的数据处理。详细讲解了`Dataset`的`__init__()`,`__getitem__()`和`__len__()`方法,以及`DataLoader`如何根据`batch_size`划分数据。同时,探讨了`torch.nn.utils.rnn.pad_packed_sequence`在处理变长序列时的作用,确保不同长度序列能正确输入到RNN模型。

2021SC@SDUSC


通过前几周的学习与分析,完成对Extract.py、Model.py的分析,接下来对my_dataloader.py展开分析。

一、Dataset类和DataLoader类

Dataset类主要是用于原始数据的读取或者基本的数据处理,比如在NLP任务中常常需要把文字转化为对应字典ids,这个步骤就可以放在Dataset中执行。

DataLoader,是进一步对Dataset的处理。Dataset得到的数据集可以理解为"列表",即可以根据index取出某个特定位置的数据。而DataLoder就是把这个Dataset数据集根据设定的batch_size划分成很多个“子数据集”,每个“子数据集”中的元素数量就是batch_size。这样做的原因是若一次性把所有的数据放进模型会导致内存溢出,而且模型的迭代会很慢,故采用划分模式。

Dataset类

实际上,torch包中已经有预定义好的torch.utils.data.Dataset类。故使用时创建一个Dataset类,使用类的继承即可。主要要重写的方法是__init __ (),__ len __ (),__ getitem __()这三个。作用如下。

__init__方法:进行类的初始化,一般是用来读取原始数据。

__getitem__方法:根据下标对每一个数据进行进一步的处理。return:希望通过dataset[index]在数据集中取出的元素。

__len__方法:return:数据集的数量(int) 。

Dataset构建:

from torch.utils.data import Dataset
import torch
 
def MyTokenizer(sentence):
    src_vocab = {
   
   '度':0,'上':1,'世':2,'中':3,
    '为':4,'人':5,'伟':6,'你':7,'务':8,'国':9,
    '大':10,'我':
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值