pytorch--批数量处理

批量处理

import torch
import torch.utils.data as Data

batch_size = 5

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

    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())

输出结果为:

Epoch: 0 |step: 0 |batch x: [9. 3. 8. 6. 2.] |batch y: [2. 8. 3. 5. 9.]
Epoch: 0 |step: 1 |batch x: [ 1.  7. 10.  4.  5.] |batch y: [10.  4.  1.  7.  6.]
Epoch: 1 |step: 0 |batch x: [ 9. 10.  8.  2.  7.] |batch y: [2. 1. 3. 9. 4.]
Epoch: 1 |step: 1 |batch x: [5. 3. 6. 4. 1.] |batch y: [ 6.  8.  5.  7. 10.]
Epoch: 2 |step: 0 |batch x: [7. 1. 2. 6. 5.] |batch y: [ 4. 10.  9.  5.  6.]
Epoch: 2 |step: 1 |batch x: [ 9. 10.  8.  4.  3.] |batch y: [2. 1. 3. 7. 8.]

设置参数num_workers=?

如果不加

if __name__ == '__main__':

就会出错。
在这里num_workers为线程个数的设置。可以查看自己电脑的线程个数。

import threading

def main():
    print(threading.active_count())
if __name__ == '__main__':
    main()

输出结果为1.
所以我以为是我电脑只有一个threading,当设置num_workers=1时,依旧会出错。
在这里插入图片描述
所以

if __name__ == '__main__':

更像是一个线程的入口,只有添加之后,线程才可以工作。如果想避免这些麻烦,也可以直接将这一参数去掉。

import torch
import torch.utils.data as Data

batch_size = 5

x = torch.linspace(1, 10, 10)
y = torch.linspace(10, 1, 10)

torch_dataset = Data.TensorDataset(x, y)
loader = Data.DataLoader(
    dataset=torch_dataset,
    batch_size=batch_size,
    shuffle=True,
    # num_workers=1,
)

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())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值