• pytorch(b站小土堆学习笔记P1-P15)


    P3. Python学习中的两大法宝函数(当然也可以用在PyTorch)

    1. import torch
    2. #查看pytorch有哪些指令
    3. print(dir(torch))
    4. print(dir(torch.cuda))
    5. #查看每条指令怎么用
    6. help(torch.cuda.is_available)

    P4. PyCharm及Jupyter使用及对比

    P5 dataset和dataloader

    P6. Dataset类代码实战

    1. import os
    2. from PIL import Image
    3. from torch.utils.data import Dataset
    4. # dataset有两个作用:1、加载每一个数据,并获取其label;2、用len()查看数据集的长度
    5. class MyData(Dataset):
    6. def __init__(self, root_dir, label_dir): # 初始化,为这个函数用来设置在类中的全局变量
    7. self.root_dir = root_dir
    8. self.label_dir = label_dir
    9. self.path = os.path.join(self.root_dir,self.label_dir)
    10. # 单纯的连接起来而已,背下来怎么用就好了,因为在win下和linux下的斜线方向不一样,所以用这个函数来连接路径
    11. self.img_path = os.listdir(self.path) # img_path 的返回值,就已经是一个列表了
    12. def __getitem__(self, idx): # 获取数据对应的 label
    13. img_name = self.img_path[idx] # img_name 在上一个函数的最后,返回就是一个列表了
    14. img_item_path = os.path.join(self.root_dir, self.label_dir, img_name) # 这行的返回,是一个图片的路径,加上图片的名称了,能够直接定位到某一张图片了
    15. img = Image.open(img_item_path) # 这个步骤看来是不可缺少的,要想 show 或者 操作图片之前,必须要把图片打开(读取),也就是 Image.open()一下,这可能是 PIL 这个类型图片的特有操作
    16. label = self.label_dir # 这个例子中,比较特殊,因为图片的 label 值,就是图片所在上一级的目录
    17. return img, label # img 是每一张图片的名称,根据这个名称,就可以使用查看(直接img)、print、size等功能
    18. # label 是这个图片的标签,在当前这个类中,标签,就是只文件夹名称,因为我们就是这样定义的
    19. def __len__(self):
    20. return len(self.img_path) # img_path,已经是一个列表了,len()就是在对这个列表进行一些操作
    21. if __name__ == '__main__':
    22. root_dir = "dataset/train"
    23. ants_label_dir = "ants"
    24. bees_label_dir = "bees"
    25. ants_dataset = MyData(root_dir, ants_label_dir)
    26. bees_dataset = MyData(root_dir, bees_label_dir)
    27. train_dataset = ants_dataset + bees_dataset
    28. # runfile('E:/pythonProject/learn_pytorch/read_data.py')

    P7/8. TensorBoard的使用 

    用于数据可视化

    运行方式

    1. # 切换到 Logs的上一层目录中
    2. tensorboard --logdir=logs --port=6007

    demo1

    1. from torch.utils.tensorboard import SummaryWriter
    2. writer = SummaryWriter("logs")
    3. # writer.add_image()
    4. # writer.add_scalar()
    5. for i in range(100):
    6. writer.add_scalar("y=2x",2*i,i)
    7. writer.close()

     

     demo2

    1. from torch.utils.tensorboard import SummaryWriter
    2. from PIL import Image
    3. from torchvision import transforms
    4. writer = SummaryWriter("../logs")
    5. img = Image.open('../images/pytorch.png')
    6. # img.show()
    7. print(img)
    8. trans_tensor = transforms.ToTensor()
    9. img_tensor = trans_tensor(img)
    10. writer.add_image('ToTensor',img_tensor)
    11. trans_norm = transforms.Normalize([2, 3, 5, 10], [0.5, 0.5, 0.5, 0.5])
    12. img_norm = trans_norm(img_tensor)
    13. writer.add_image("Normalize",img_norm,2) #2,表示第2步
    14. writer.close()

    P10/P11/P12/P13 Transform(处理图片 先忽略) 

    数据集下载

    用好pytorch官网

     

    1. #下载路径为../data;第二个参数表示现在训练集;第三个参数表示下载成tensor类型,最后将download设置为true
    2. train_data = torchvision.datasets.CIFAR10(root="../data", train=True, transform=torchvision.transforms.ToTensor(),
    3. download=True)
    4. #,train=False 表示下载测试集
    5. test_data = torchvision.datasets.CIFAR10(root="../data", train=False, transform=torchvision.transforms.ToTensor(),
    6. download=True)

     P15 DataLoader加载数据集
            加载数据集方式主要使用的是DataLoader;我们不管是自己制作的数据集,还是从网上下载的数据集,当我们把这些数据送到神经网络训练的时候,我们必须用一些特定的方式送给神经网络。这便是DataLoader的作用,比如最常见的batch_size。有时数据集非常的大几万甚至几十万张图片,一张一张送进送进神经网络效率太低,所以我们要成批(batch_size)的送给神经网络。还有我们是否对数据集打乱等等。

     

  • 相关阅读:
    在Linux上以all in one模式安装kubernetes & kubesphere
    cf1695D1. Tree Queries (Easy Version)(div2)【树上问题】
    力扣刷题 day58:10-28
    数据结构——哈希
    H7-TOOL的I2C接口方式脱机烧录操作方法,已经发布(2022-07-16)
    PS文字创建工作路径矢量化后变细,导出的svg也变细的解决方案
    机器学习笔记 - Ocr识别中的CTC算法原理概述
    【Vue3】官网项目・Vue Mastery Sock-4(计算属性)
    ubuntu下查看realsense摄像头查看支持的分辨率和频率
    玩转Mysql系列 - 第23篇:mysql索引管理详解
  • 原文地址:https://blog.csdn.net/zzrh2018/article/details/132660848