【pytorch笔记】第二篇 Pytorch加载数据

1. Python两大法宝

① Python3.6.3相当于一个package,package里面有不同的区域,不同的区域有不同的工具。

② Python语法有两大法宝:dir()、help() 函数。

  • dir():打开,看见里面有多少分区、多少工具。
  • help():说明书。
import torch
print(torch.cuda.is_available())
help(torch.cuda.is_available) # 查看 torch.cuda.is_available 的用法
dir(torch)  # 查看torch包中有哪些区、有哪些工具
True
Help on function is_available in module torch.cuda:

is_available() -> bool
    Returns a bool indicating if CUDA is currently available.

Output exceeds the size limit. Open the full output data in a text editor
['AVG',
 'AggregationType',
 'AliasDb',
 'AnyType',
 'Argument',
 'ArgumentSpec',
 'BFloat16Storage',
 'BFloat16Tensor',
 'BenchmarkConfig',
 'BenchmarkExecutionStats',
 'Block',
 'BoolStorage',
 'BoolTensor',
 'BoolType',
 'BufferDict',
 'ByteStorage',
 'ByteTensor',
 'CONV_BN_FUSION',
 'CallStack',
 'Capsule',
 'CharStorage',
 'CharTensor',
 'ClassType',
 'Code',
 'CompilationUnit',
...
 'rrelu',
 'rrelu_',
 'rsqrt',
 'rsqrt_',
 ...]

1. Pytorch加载数据

① Pytorch中加载数据需要Dataset、Dataloader。

  • Dataset提供一种方式去获取每个数据及其对应的label,告诉我们总共有多少个数据。
  • Dataloader为后面的网络提供不同的数据形式,它将一批一批数据进行一个打包。

2. 常用数据集两种形式

① 常用的第一种数据形式,文件夹的名称是它的label。

② 常用的第二种形式,lebel为文本格式,文本名称为图片名称,文本中的内容为对应的label。

from torch.utils.data import Dataset
help(Dataset)

3. 路径直接加载数据

from PIL import Image

img_path = "Data/FirstTypeData/train/ants/0013035.jpg"        
img = Image.open(img_path)
img.show()

4. Dataset加载数据

主要是封装成类,可以单独分离为文件,主要是集成Dataset类,注意__inint__(),getitem()和__len__()三个方法的实现,可作为自定义加载数据集的模板。

from torch.utils.data import Dataset
from PIL import Image
import os

class MyData(Dataset):     
    def __init__(self,root_dir,label_dir):    # 该魔术方法当创建一个事例对象时,会自动调用该函数
        self.root_dir = root_dir # self.root_dir 相当于类中的全局变量
        self.label_dir = label_dir     
        self.path = os.path.join(self.root_dir,self.label_dir) # 字符串拼接,根据是Windows或Lixus系统情况进行拼接               
        self.img_path = os.listdir(self.path) # 获得路径下所有图片的地址
        
    def __getitem__(self,idx):
        img_name = self.img_path[idx]
        img_item_path = os.path.join(self.root_dir,self.label_dir,img_name)            
        img = Image.open(img_item_path)
        label = self.label_dir
        return img, label
    
    def __len__(self):
        return len(self.img_path)
    
root_dir = "Data/FirstTypeData/train"
ants_label_dir = "ants"
bees_label_dir = "bees"
ants_dataset = MyData(root_dir, ants_label_dir)
bees_dataset = MyData(root_dir, bees_label_dir)
print(len(ants_dataset))
print(len(bees_dataset))
train_dataset = ants_dataset + bees_dataset # train_dataset 就是两个数据集的集合了     
print(len(train_dataset))

img,label = train_dataset[200]
print("label:",label)
img.show()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pytorch图片数据集一般有两种方法。第一种是使用torchvision.datasets中的ImageFolder来读取图片,然后用DataLoader来并行,适合图片分类问题,简单但不灵活。\[1\]您可以通过设置各种参数,例如批处理大小以及是否在每个epoch之后对数据打乱顺序,来自定义DataLoader。例如,可以使用以下代码创建一个DataLoader:dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)。\[2\]第二种方法是通过继承torch.utils.data.Dataset实现用户自定义读取数据集,然后用DataLoader来并行,这种方法更为灵活。您可以将分类图片的父目录作为路径传递给ImageFolder(),并传入transform来数据集。然后可以使用DataLoader数据,并构建网络训练。\[3\] #### 引用[.reference_title] - *1* [Pytorch图片数据集的两种方式](https://blog.csdn.net/weixin_43917574/article/details/114625616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Pytorch图像数据](https://blog.csdn.net/qq_28368377/article/details/105635898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [pytorch自己的图片数据集的两种方法](https://blog.csdn.net/qq_53345829/article/details/124308515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值