【5】pytorch批量训练

这段代码展示了如何使用PyTorch的DataLoader对张量数据进行批量训练。首先创建了两个线性分布的张量x和y作为数据集,然后通过TensorDataset组合成数据集,并设置批量大小为5,数据是否打乱为True。最后,通过DataLoader加载数据并进行3个epoch的迭代,打印每个批次的x和y数据。
摘要由CSDN通过智能技术生成

【1】利用dataloader函数完成批量训练

【2】代码

# -*- coding: utf-8 -*-#

#-------------------------------------------------------------------------------
# Name:         batchtest
# Description:  
# Author:       Administrator
# Date:         2020/11/29
#-------------------------------------------------------------------------------

import  torch
import torch.utils.data as Data


torch.manual_seed(1)    # reproducible
BATCH_SIZE=5

if __name__ == '__main__':
    x = torch.linspace(1, 10, 10)       # x data (torch tensor)
    y = torch.linspace(10, 1, 10)       # y data (torch tensor)

    torch_dataset=Data.TensorDataset(x,y)
    loader=Data.DataLoader(
        dataset=torch_dataset,
        batch_size=BATCH_SIZE,
        shuffle=True,#数据是否打乱
        num_workers=2,#采用几个线程
        )

    for epoch in range(3):
        for step ,(batch_x,batch_y) in enumerate(loader):
            # 打出来一些数据
            print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',
                  batch_x.numpy(), '| batch y: ', batch_y.numpy())

【3】报错问题

添加if __name__ == '__main__':的原因: (1)批训练错误之got an unexpected keyword...

(2)github源码  https://github.com/MorvanZhou/PyTorch-Tutorial/blob/master/tutorial-contents/305_batch_train.py

【4】更改后的代码

# -*- coding: utf-8 -*-#

#-------------------------------------------------------------------------------
# Name:         batchtest
# Description:  
# Author:       Administrator
# Date:         2020/11/29
#-------------------------------------------------------------------------------

import  torch
import torch.utils.data as Data


torch.manual_seed(1)    # reproducible
BATCH_SIZE=5


x = torch.linspace(1, 10, 10)       # x data (torch tensor)
y = torch.linspace(10, 1, 10)       # y data (torch tensor)

torch_dataset=Data.TensorDataset(x,y)
loader=Data.DataLoader(
    dataset=torch_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,#数据是否打乱
   # num_workers=2,#采用几个线程
    )

for epoch in range(3):
    for step ,(batch_x,batch_y) in enumerate(loader):
        # 打出来一些数据
        print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',
              batch_x.numpy(), '| batch y: ', batch_y.numpy())

【5】结果图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值