简单案例及示意,帮助初学者一起理解数据处理的逻辑
一、开篇先上完整代码
import torch
import torch.utils.data as Data
if __name__ == '__main__':
X=torch.Tensor([[10,11,12],[13,14,15],[16,17,18],[19,20,21]])
Y=torch.Tensor([100,101,102,103])
train_data=Data.TensorDataset(X,Y)
train_loader=Data.DataLoader(dataset=train_data,batch_size=2,shuffle=True,num_workers=1)
for index,(X_x,Y_y) in enumerate(train_loader):
print('索引:',index)
print('x:',X_x)
print('y:',Y_y)
二、导入Pytorch以及相关数据处理模块
import torch
import torch.utils.data as Data
三、构建自变量和因变量
if __name__ == '__main__':
X=torch.Tensor([[10,11,12],[13,14,15],[16,17,18],[19,20,21]])
Y=torch.Tensor([100,101,102,103])
注意:因为涉及多线程问题,码上if name == ‘main’:,避免程序报错。
四、利用TensorDataset将自变量X与因变量Y整合在一起
train_data=Data.TensorDataset(X,Y)
五、利用DataLoader加载整合好的数据集
train_loader=Data.DataLoader(dataset=train_data,batch_size=2,shuffle=True,num_workers=1)
#dataset为要使用的数据集
#batch_size为一次样本的大小,如1,2,16,32,64等等,本例数据样本简单,选2
#shuffle()可选择‘True’或者‘False’,是否打乱数据
#num_workers=1,使用1线程。
六、输出每次的数据匹配
for index,(X_x,Y_y) in enumerate(train_loader):
print('索引:',index)
print('x:',X_x)
print('y:',Y_y)
#enumerate()函数是一个可以返回带索引值的函数,此处不展开,不懂可以自己C一下。
七、程序结果
batch_size=2,shuffle=True的情况,每次x与y各抽取两个,共2个batch为0和1
batch_size=2,shuffle=False的情况,每次x与y各抽取2个,按顺序,不打乱抽取,共2个batch为0和1.
batch_size=1,shuffle=True的情况,每次x与y各抽取1个,共4个batch为0-3
batch_size=1,shuffle=False的情况,按顺序,不打乱抽取,每次x与y各抽取1个,共4个batch为0-3
八、说明
本文简单实例化自变量X与因变量Y,非常简单,只是帮助大家进一步理解数据整合和数据加载的相关逻辑。