莫烦学习笔记4-批训练

基本内容:

批训练就是把你的数据分批训练,像之前回归的时候100个点可以分成两批训练,可以是50,50,也可以是80,20。分批有啥好处呢?我想到的就是可以用多线程并行计算。

莫烦这篇博客就是说在torch.utils.data这个库里面(暂且称这个库为Data)有一个函数,也就是Data.DataLoader(),这个函数可以帮你实现批训练。它包括下面几个参数:dataset数据集,batch_size每批数量,shuffle是否打乱(一般是True),num_workers线程数。其中,dataset要先用Data.TensorDataset(<data>,<target>)变成dataset对象。然后用俩循环(一个epoch一个dataloader),就能实现分epoch再分批训练

报错:

  • Data.TensorDataset()参数问题,报错TypeError: __init__() got an unexpected keyword argument 'data_tensor'

把教程里的argument也就是data_tensor和target_tensor去了就好了

 

  • 下面试一试单纯输出类似莫烦那样的每一个epoch,batch以及batch内容,报错出了一大堆错误,从中揪出一行比较显眼的:

好像是因为有关线程的得写。。if __name__ == '__main__':这个东西。。?讲真的不太懂..先记住了。加上那个开头就ok了,下面是代码:

代码:

import torch
import torch.utils.data as Data

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

    Batch_Size = 5
    torch_dataset = Data.TensorDataset(x, y)
    loader = Data.DataLoader(
        dataset=torch_dataset,
        batch_size=Batch_Size,
        shuffle=True,
        num_workers=2
    )

    a=1

    for epoch in range(3):
        for (step, (data, target)) in enumerate(loader):
            print(
                'epoch:', epoch, 'step:', step,
                '\n\tbatch_x:', data.numpy(), 'batch_y:', target.numpy()
            )

输出也就是:

1 epoch: 0 step: 0 
	batch_x: [8. 4. 2. 3. 5.] batch_y: [3. 7. 9. 8. 6.]
1 epoch: 0 step: 1 
	batch_x: [ 7.  1.  9.  6. 10.] batch_y: [ 4. 10.  2.  5.  1.]
1 epoch: 1 step: 0 
	batch_x: [ 2.  1. 10.  6.  4.] batch_y: [ 9. 10.  1.  5.  7.]
1 epoch: 1 step: 1 
	batch_x: [5. 8. 7. 9. 3.] batch_y: [6. 3. 4. 2. 8.]
1 epoch: 2 step: 0 
	batch_x: [4. 9. 5. 6. 1.] batch_y: [ 7.  2.  6.  5. 10.]
1 epoch: 2 step: 1 
	batch_x: [ 7. 10.  2.  3.  8.] batch_y: [4. 1. 9. 8. 3.]

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值