Pytorch——DataLoader(批训练)

文章目录

1.前言

Pytorch 中提供了一种帮你整理你的数据结构的好东西, 叫做 DataLoader, 我们能用它来包装自己的数据, 进行批训练。

2.DataLoader

DataLoader 是 torch 给你用来包装你的数据的工具. 所以你要将自己的 (numpy array 或其他) 数据形式装换成 Tensor, 然后再放进这个包装器中. 使用 DataLoader 有什么好处呢? 就是他们帮你有效地迭代数据

import torch
from torch.utils.data import DataLoader, TensorDataset
torch.manual_seed(1)

BATCH_SIZE = 4     #意味着一个epoch有两个迭代
x = torch.linspace(1,20,20)
y = torch.linspace(20,1,20)

torch_dataset = TensorDataset(x,y)      

loader = DataLoader(
    dataset = torch_dataset,
    batch_size = BATCH_SIZE,
    shuffle = True,
    num_workers = 4
)

for epoch in range(3):
    for step , (batch_x, batch_y) in enumerate(loader):    #stepb表示一个eopch中的迭代次数
        print('Epoch:',epoch, '|Step:',step,'|batch x:',batch_x.numpy(),'|batch y:',batch_y.numpy() )

在这里插入图片描述
可以看出, 每步都导出了4个数据进行学习. 然后每个 epoch 的导出数据都是先打乱了以后再导出.(通过shuffle = True控制)

真正方便的还不是这点. 如果我们改变一下 BATCH_SIZE = 8, 这样我们就知道, step=0 会导出8个数据, 但是, step=2 时数据库中的数据不够 8个, 这时怎么办呢:
在这里插入图片描述
这时, 在 step=1 就只给你返回这个 epoch 中剩下的数据就好了.

发布了125 篇原创文章 · 获赞 348 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37763870/article/details/104829575