前言

学习路线参考:Future

学习路线:Python、数学基础 => Numpy、Pandas等数据分析库、PyTorch深度学习框架 => 机器学习 => 深度学习

PyTorch基础

参考:小土堆

获取数据

在深度学习中训练模型都是小批量小批量地优化训练的,即每次都会从原数据集中取出一小批量进行训练,完成一次权重更新后,再从原数据集中取下一个小批量数据,然后再训练再更新。

在PyTorch的 torch.utils.data包中定义了两个类 DatasetDataLoader,这两个类就是用来批量地加载数据的。

Dataset

提供一种方式去获取数据及其label => 数据集链接

from torch.utils.data import Dataset
from PIL import Image
import os
# 使用MyData继承Dataset
class MyData(Dataset):
    def __init__(self, root_dir, label_dir):
        self.root_dir = root_dir  # 训练数据集路径 /dataset/train
        self.label_dir = label_dir  # 具体文件夹名称 ants
        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]	# 使用idx即index标记每个图片的名称
        img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)	# 拼接出每个图片的路径
        img = Image.open(img_item_path)	# 这里的img为具体图片的属性
        label = self.label_dir	# 标签
        return img, label

    def __len__(self):
        return len(self.img_path)	# 返回数据集长度


root_dir = "dataset/train"
ants_label_dir = "ants"
ants_dataset = MyData(root_dir,ants_label_dir)

Dataloader

为后面的网络提供不同的数据形式

图像变换

Tensorboard

该方法常用于查看数据的变化

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")	# 创建文件夹
# y = x
for i in range(100):
    """
        @param: str、scalar_value、global_step
        @dep: 折线图标题、y轴、x轴
    """
    writer.add_scalar("y=x",i,i)	# 画出图像
writer.close()

# 使用终端运行,启动服务
> tensorboard --logdir=logs

pytorch1

该方法常用于查看model训练的,每个阶段的输出结果

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

writer = SummaryWriter("logs")
imgage_PIL="data/train/ants_image/0013035.jpg"  # 图片地址
img_PIL=Image.open(imgage_PIL)  # 打开图片
img_array=np.array(img_PIL) # 以numpy数组形式存储
# 写入
writer.add_image("test",img_array,1,dataformats='HWC')

writer.close()

pytorch2

Transforms

使用方法

from PIL import Image
from torchvision import transforms

img_path = "data/train/ants_image/0013035.jpg"
img=Image.open(img_path)    # 以PIL类型打开图片

tensor_trans=transforms.ToTensor()  # 创建一个转化实例
tensor_img=tensor_trans(img)    # 将PIL类型转化为tensor类型
print(tensor_img)
文章作者: Romcere.
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Romcere.
AI技术 AI
喜欢就支持一下吧