由于数据量太大,经常会把整个数据拆成一小批一小批来训练,可以提高训练效率。
Torch提供了一种整理数据的方法:DataLoader,用它来包装数据,进行批训练
构建数据
import numpy as np
import torch
import torch.utils.data as Data
BATCH_SIZE = 5
x = torch.linspace(1,10,10) #x是1-10
y = torch.linspace(10,1,10) #y是10-1
print(x)
print(y)
import numpy as np
import torch
import torch.utils.data as Data
BATCH_SIZE = 5
x = torch.linspace(1,10,10) #x是1-10
y = torch.linspace(10,1,10) #y是10-1
#print(x)
#print(y)[]
torch_dataset = Data.TensorDataset(x,y)
#表示我们的数据集是x,验证集是y
loader = Data.DataLoader(
dataset = torch_dataset,
batch_size = BATCH_SIZE,
shuffle = True)
# num_workers = 2)
#表示每一批数据是五个,那么10个数据一共就拆成两批去训练
#要不要随机打乱shuffle = True表示每次训练打乱顺序
#windows去掉num_workers = 2这一行,表示每次都是用两个进程来提取的,会更有效率
#数据集整体训练三次,每次都
for epoch in range(3):
for step,(batch_x,batch_y) in enumerate(loader):#把loader每次提取的时候加上索引赋给step
#training...
print('Epoch:',epoch,'| Step:',step,'| batch x:',batch_x,
'| batch y:',batch_y)
每次的数据是被打乱的,因为shuffle = True
如果不打乱,就是每次都是平均分两批数据训练:
如果数据不是平均分配的话,如果batch_size = 8的时候,那么就会先训练八个数据,剩下两个数据第二次训练: