06 | Torchvision(上):数据读取,训练开始的第一步
PyTorch 中的数据读取
- 深入了解
- 翻译
- 解释
- 总结
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-2535 - JC国内直接下载MNIST数据集,可能会有些问题 可以通过本地下载文件,放入到某目录,然后在该目录下使用 python -m http.server 启动一个本地server 最后把 mnist.py 文件里的 mirrors 上方添加一行 http://localhost:8000/MNIST/
作者回复: 👍🏻👍🏻👍🏻 ^^
2022-05-1523 - 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-2243 - 乐呵的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-271 - Geek_fc975d为什么我只有__next__函数,而没有next()函数
作者回复: hello,你好,感谢留言。 你是说这块吗? print('One batch tensor data: ', iter(tensor_dataloader).next()) 不会啊,next(),是Python迭代器的内容,跟Pytorch没有关系。 具体你是怎么做的呢?
2022-04-0721 - 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 - ACTDataset
作者回复: 👍🏻 ^^
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归属地:北京