PyTorch 深度学习实战
方远
LINE China 数据科学家
10381 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 32 讲
开篇词 (1讲)
PyTorch 深度学习实战
15
15
1.0x
00:00/00:00
登录|注册

06 | Torchvision(上):数据读取,训练开始的第一步

你好,我是方远。
今天起我们进入模型训练篇的学习。如果将模型看作一辆汽车,那么它的开发过程就可以看作是一套完整的生产流程,环环相扣、缺一不可。这些环节包括数据的读取、网络的设计、优化方法与损失函数的选择以及一些辅助的工具等。未来你将尝试构建自己的豪华汽车,或者站在巨人的肩膀上对前人的作品进行优化。
试想一下,如果你对这些基础环节所使用的方法都不清楚,你还能很好地进行下去吗?所以通过这个模块,我们的目标是先把基础打好。通过这模块的学习,对于 PyTorch 都为我们提供了哪些丰富的 API,你就会了然于胸了。
Torchvision 是一个和 PyTorch 配合使用的 Python 包,包含很多图像处理的工具。我们先从数据处理入手,开始 PyTorch 的学习的第一步。这节课我们会先介绍 Torchvision 的常用数据集及其读取方法,在后面的两节课里,我再带你了解常用的图像处理方法与 Torchvision 其它有趣的功能。

PyTorch 中的数据读取

训练开始的第一步,首先就是数据读取。PyTorch 为我们提供了一种十分方便的数据读取机制,即使用 Dataset 类与 DataLoader 类的组合,来得到数据迭代器。在训练或预测时,数据迭代器能够输出每一批次所需的数据,并且对数据进行相应的预处理与数据增强操作。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

PyTorch数据读取基础知识及Torchvision库的使用方法是本文的重点。文章介绍了如何利用Dataset类和DataLoader类进行数据集处理和迭代加载。此外,还详细介绍了Torchvision库的安装方式以及利用其读取数据的方法。通过以MNIST数据集为例,展示了如何使用Torchvision来读取数据。文章强调了PyTorch中数据读取的基本操作,以及利用Torchvision库进行数据读取的方法。读者通过本文可以快速了解PyTorch中数据读取的基础知识,掌握利用Torchvision库进行数据读取的方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《PyTorch 深度学习实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(32)

  • 最新
  • 精选
  • 超人不会飞
    tensor_dataloader 是一个迭代器 iter(tensor_dataloader)是一个迭代器对象 iter(tensor_dataloader).next() 是输出迭代器的下一个元素 兄弟们我这波理解到位不

    作者回复: 你好,超人不会飞。感谢你的留言。 tensor_dataloader是一个dataloader对象,用iter()强制类型转换成迭代器的对象,next()是输出迭代器下一个元素。^^

    2021-10-25
    3
    5
  • JC
    国内直接下载MNIST数据集,可能会有些问题 可以通过本地下载文件,放入到某目录,然后在该目录下使用 python -m http.server 启动一个本地server 最后把 mnist.py 文件里的 mirrors 上方添加一行 http://localhost:8000/MNIST/

    作者回复: 👍🏻👍🏻👍🏻 ^^

    2022-05-15
    2
    3
  • Spoon
    老师好, 想问下。。为啥你说是10x3 维啊 数据不是2维的吗,下面标签不是一维的吗。。。有点confuse了。。 data_tensor = torch.randn(10, 3) target_tensor = torch.randint(2, (10,)) # 标签是0或1

    作者回复: 你好,Spoon。感谢你的留言。 数据是3维,标签是1维,一共有10条数据。 10*3是指data_tensor的size,10*1是指target_tensor的size。 torch.randint(2, (10,)) 这句代码的意思是指生成10个随机数,随机数的范围只能是0或者1。 可以运行下代码,分别打印一下data_tensor和target_tensor的内容,一看就能明白了:)

    2021-10-22
    4
    3
  • 乐呵的hehe
    老师,您好,下面这个问题,我也有些疑惑,但是我不在微信群里,您可以在这里再解释一下吗?谢谢! ------------------------------------------------------------------- from torch.utils.data import DataLoader tensor_dataloader = DataLoader(dataset=my_dataset, batch_size=2, shuffle=True, num_workers=0)# 进程数, 0表示只有主进程 # 以循环形式输出 for data, target in tensor_dataloader: print(data, target) # 输出一个batch print('One batch tensor data: ', iter(tensor_dataloader).next()) 输出结果: tensor([[ 0.7989, 3.1884, 1.2282], [-0.6210, -0.9707, 2.5557]]) tensor([1, 0]) tensor([[-0.8162, -0.5454, 2.1312], [ 0.8296, -0.2082, 1.7351]]) tensor([0, 0]) tensor([[ 1.3808, 0.2034, 0.3342], [ 0.4650, -1.1422, -0.4364]]) tensor([1, 1]) tensor([[ 1.0286, -1.1956, 0.4743], [ 3.1708, -0.0568, -1.5444]]) tensor([1, 0]) tensor([[ 0.1358, 1.2954, -0.0674], [-0.7422, -0.2062, 2.4920]]) tensor([0, 0]) One batch tensor data: [tensor([[ 3.1708, -0.0568, -1.5444], [-0.7422, -0.2062, 2.4920]]), tensor([0, 0])] 迭代器输出的tensor怎么会都不在一个batch里呢?正常情况下,不是应该输出第二个batch里的tensor嘛?

    作者回复: 您好,感谢留言。 因为设置了shuffle=True参数。 数据会shuffle一下

    2022-04-27
    1
  • Geek_fc975d
    为什么我只有__next__函数,而没有next()函数

    作者回复: hello,你好,感谢留言。 你是说这块吗? print('One batch tensor data: ', iter(tensor_dataloader).next()) 不会啊,next(),是Python迭代器的内容,跟Pytorch没有关系。 具体你是怎么做的呢?

    2022-04-07
    2
    1
  • peng
    老师您好,以下的例子,我调用时会报错, # 输出一个batch print('One batch tensor data: ', iter(tensor_dataloader).next()) 报错信息如下, AttributeError Traceback (most recent call last) Cell In[17], line 11 8 for data, target in tensor_dataloader: 9 print(data, target) ---> 11 print('One batch tensor data: ', iter(tensor_dataloader).next()) AttributeError: '_SingleProcessDataLoaderIter' object has no attribute 'next' 把调用改为 print('One batch tensor data: ', iter(tensor_dataloader).__next__()) 才可以正常运行,这个是pytorch的版本问题?

    作者回复: 你好,看起来是版本的问题。

    2024-01-25归属地:北京
  • Monin
    老师 你好 目前Pytorch框架跟TensorFlow相比市场应用还多吗? 目前除了这两个还有哪些深度学习框架值得关注和研究的?

    作者回复: 你好,Monin。应用市场还是很多的。

    2023-08-23归属地:上海
    3
  • 孙新
    display(mnist_dataset_list[0][0]) 这一行没有成功,提示display错误 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'display' is not defined 我用的环境有问题吗?还是说需要什么IDE才能出效果?

    作者回复: 你好,孙新,感谢你的留言。 这个display()函数是Jupyter自带的,如果想在其他IDE中使用,可以尝试: from IPython import display

    2022-09-02归属地:北京
    2
  • ACT
    Dataset

    作者回复: 👍🏻 ^^

    2022-07-28归属地:陕西
  • John(易筋)
    IOPub data rate 超限 解决 This works for me in Mac and Windows (taken from here): 1. To create a jupyter_notebook_config.py file, with all the defaults commented out, you can use the following command line: $ jupyter notebook --generate-config 2. Open the file and search for c.NotebookApp.iopub_data_rate_limit 3. 取消注释Comment out the line c.NotebookApp.iopub_data_rate_limit = 1000000 and change it to a higher default rate. l used c.NotebookApp.iopub_data_rate_limit = 10000000 参考: https://stackoverflow.com/questions/43288550/iopub-data-rate-exceeded-in-jupyter-notebook-when-viewing-image

    作者回复: 👍🏻👍🏻👍🏻

    2022-07-28归属地:北京
收起评论
显示
设置
留言
32
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部