Pytorch深度学习笔记

目录

一、Dataset类

获取图片地址

1.单张图片获取

2.将多张图片打包为列表

 创建dataset类

二、TensorBoard的使用

1.导入SummaryWriter

2.使用add_scalar()

3.使用add_image()

三、Transforms的使用

1.ToTensor()


一、Dataset类

获取图片地址

1.单张图片获取

需要用到Pillow库,简称PIL,它是一个Python的第三方库,是一个非常好用的图像处理库。

from PIL import Image

img_path='数据集\练手数据集\\train\\ants_image\\0013035.jpg'
img = image.open(img_path)   #创建一个Image对象
img.show()                   #打开Image对象,弹出一个图片弹窗

 即可获得一个包含了图片各种信息的Image对象。

2.将多张图片打包为列表

利用OS标准库中listdir方法,OS表示Operating System,即操作系统。

import os

dir_path="数据集\练手数据集\\train\\ants_image"
img_path_list=os.listdir(dir_path)  #获得地址列表

 创建dataset类

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

class MyData(Dataset):
    
    def __init__(self,root_dir,label_dir):
        self.root_dir = root_dir
        self.label_dir = label_dir

        # 将以上路径组合
        self.path = os.path.join(self.root_dir,self.label_dir)
        # 获得打包路径
        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 = "数据集\练手数据集\\train"
ants_label_dir = "ants_image"
bees_label_dir = "bees_image"
ants_dataset = MyData(root_dir,ants_label_dir) #蚂蚁dataset
bees_dataset = MyData(root_dir,bees_label_dir) #蜜蜂dataset

由于class中使用了__getitem__方法,所以可以直接用索引取用需要的图片,例如

#直接展示
ants_dataset[0]
Out[4]: (<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=768x512>, 'ants_image')

#获取img和label
img,label = ants_dataset[0]
img.show()

也可以将两个类相加,获得整个数据集

train_dataset = ants_dataset + bees_dataset # 将两个类相加
len(ants_dataset) 
Out[7]: 124

# 蚂蚁类有124张图片
# 所以在train_dataset中0-123为蚂蚁类
# 124之后为蜜蜂类

img,label = train_dataset[123]
img.show()  # 蚂蚁图片

img,label = train_dataset[124]
img.show()  # 蜜蜂图片


二、TensorBoard的使用

1.导入SummaryWriter

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs") # 创建一个名为logs的文件夹

# 会使用到的两种方法
writer.add_image()
writer.add_scalar()

2.使用add_scalar()

可以用于绘制图像。

使用实例:

# 绘制一个y=x的图像
for i in range(100):
    writer.add_scalar("y=x",i,i)

 在logs文件夹中会出现一个事件,可以用Terminal打开,代码为:

tensorboard --logdir=logs       # logdir表示事件所在文件夹

当多次生成事件在同一文件夹后会发现图像会冗余,这种情况可以删除整个文件夹并重建子文件夹,或删除对应文件夹下的所有事件,即可解决。

3.使用add_image()

参数:add_image( tag , img_tensor , global_step)

实例: 

from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np

writer = SummaryWriter("logs")

# 获取图片路径
image_path = "数据集\练手数据集\\train\\ants_image\\0013035.jpg"
# 打开图像
img_PIL = Image.open(image_path)
# 转换为ndarray
img_array = np.array(img_PIL)

writer.add_image("test",img_array,1,dataformats='HWC')
# 当转换成numpy类型后,数据为(H,W,C),所以需要加上dataformats='HWC',不然之后会报错。

打开事件后会发现多了image一栏。

 多次在同一img_tensor下,仅改变global_step并使用add_image()后可以滑动图片。

三、Transforms的使用

transfroms是pytorch的预处理模块。

1.ToTensor()

ToTensor能将PIL Image或numpy.ndarray数据类型转换为Tensor格式。

使用实例:

from PIL import Image
from torchvision import transforms

image_path = "数据集\练手数据集\\train\\ants_image\\0013035.jpg"
image = Image.open(image_path)

# 创建一个对象
tensor_trans = transforms.ToTensor()

#   由于ToTensor中有__call__方法
#   因此可以直接将对象作为函数使用
#   def __call__(self, pic)
#   输入参数为PIL Image or numpy.ndarray

tensor_img = tensor_trans(image)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《PyTorch深度学习实践》是由牟大恩编写的一本介绍PyTorch深度学习的实践指南。这本书主要分为两部分,第一部分介绍了PyTorch的基本概念和使用方法,包括PyTorch的基本原理、张量运算、自动求导、数据集、数据加载等;第二部分涵盖了构建深度学习网络的高级主题,包括卷积神经网络、循环神经网络、生成对抗网络、迁移学习等。 《PyTorch深度学习实践》的优点在于其内容深入浅出,对于初学者也很友好。书中提供了很多实例和代码,可以帮助读者更好地理解和掌握PyTorch的使用。此外,这本书还介绍了一些实际应用案例,可以让读者了解深度学习在不同领域的应用。 如果您正在学习PyTorch深度学习,或者正在进行深度学习相关研究,那么《PyTorch深度学习实践》是一本很有价值的参考书籍。无论您是初学者还是有经验的研究人员,都可以从这本书中获得一些实用的知识和灵感。如果您对这本书感兴趣,可以在各大图书网站上下载或购买。 ### 回答2: PyTorch是近年来非常受欢迎的深度学习框架之一。而《PyTorch深度学习实践》这本书则是由牟大恩所写,是一本介绍PyTorch框架及其应用的指南。 本书主要分为三个部分:第一部分介绍了Python基础、NumPy、Tensor和PyTorch基础,这对于初学者非常重要;第二部分是深度学习PyTorch的应用,包括图像分、预训练模型、目标检测和分割等内容;第三部分则涉及更高级的深度学习技术,如生成对抗网络、自然语言处理和强化学习。 此外,本书还提供了大量的实例代码和Jupyter笔记本,供读者练习和实践。这些案例覆盖了诸如文本分、时间序列分析、语音识别等不同领域。 总之,如果你想学习深度学习PyTorch框架,特别是如果你已经具有Python编程经验,那《PyTorch深度学习实践》是一本非常实用的图书。它可以帮助你深入了解该框架,学习如何构建和训练深度神经网络,并通过实践掌握更高级的深度学习技巧。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值