本章将大量的数据划分为多个小部分数据,对模型进行训练。
整体流程及示例代码
这个的整体流程应该是:拿到数据----创建数据库----创建loader----进行训练
import torch as t
import torch.nn.functional as tnf
import torch.utils.data as Data
if __name__ == '__main__':
# 每次进行训练的数据包大小
BATCH_SIZE = 5
x = t.linspace(1, 10, 10)
y = t.linspace(10, 1, 10)
# 制作数据库,首先传入待处理数据,之后传入标签数据
# 现在不用标志data_tensor和target_tensor,按照顺序传入就好
torch_dataset = Data.TensorDataset(x, y)
# 还要有一个loader,应该定义 数据库,单位数量、是否打乱
loader = Data.DataLoader(
dataset=torch_dataset,
batch_size=BATCH_SIZE,
shuffle=True,
num_workers=2
)
# 将所有数据执行3次,并且每个循环内调用loader
for epoch in range(3):
for step, (batch_x, batch_y) in enumerate(loader):
# training
print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',
batch_x.numpy(), '| batch y: ', batch_y.numpy())
方法解析
1.Data.TensorDataset
创建tensor数据库,第一项输入参数为data,第二项为target。
更新后不必再进行标注。
2.Data.DataLoader
创建Loader,传入参数依次为:数据库对象,单位装载量,是否打乱装载,线程数量。
3.for x,y in enumerate(z)
这是python自带的本土方法,遍历z数组,x、y分别为其索引及内容。
4.loader单位装载量
设置loader的单位装载量,及为每次从数据库中取出多少个数据出来,不需要和数据库中所存在的数据量进行匹配。