pytorch使用dataset和dataloader加载数据集

数据集:batch计算-》加快计算速度;single计算-》越过鞍点

single可以得到更好的结果但是无法充分利用cpu的并行能力

mini batch综合两者优势。

epoch:一次所有数据参与训练;

batch-size:每次参与训练的样本数量;

interation:内层迭代的次数;batch的个数

1.作用:加载数据集

2.dataset:数据集支持索引

抽象类,不能直接实例化,要创建类继承

class MyDataset(Dataset):
    def __init__(self, filepath):
        xy = np.loadtxt(filepath, delimiter=',', dtype=np.float32)
        self.len = xy.shape[0] # shape(多少行,多少列)
        self.x_data = torch.from_numpy(xy[:, :-1])#x取前面所有列
        self.y_data = torch.from_numpy(xy[:, [-1]])#y取最后一列

    #索引按位取值
    def __getitem__(self, index):
        return self.x_data[index], self.y_data[index]
     
    #返回数据集大小
    def __len__(self):
        return self.len
 
#实例化新类 
dataset = MyDataset('diabetes.csv')

3.dataloader:支持mini batch

train_loader = DataLoader(dataset=dataset, batch_size=32, shuffle=True, num_workers=0) 

参数:

dataset:数据集

batch-size:批量大小

shuffle:每个epoch的打乱数据顺序

num workers:多线程数目

4.mini-batch双层嵌套训练

for epoch in range(100):
        for i, data in enumerate(train_loader, 0): # train_loader 是先shuffle后mini_batch
            #prepare dataset
            inputs, labels = data
            #forword
            y_pred = model(inputs)
            loss = criterion(y_pred, labels)
            print(epoch, i, loss.item())
            #backword
            optimizer.zero_grad()
            loss.backward()
            #update
            optimizer.step()

报错更正:

if __name__ == '__main__':
    for epoch in range(100):
        for i, data in enumerate(train_loader, 0):

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值