栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

PyTorch入门

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PyTorch入门

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】_哔哩哔哩_bilibili

一.数据集的读取
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.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 = 'dataset/train'
ants_label_dir = 'ants'
ants_dataset = MyData(root_dir, ants_label_dir)
bees_label_dir = 'bees'
bees_dataset = MyData(root_dir, bees_label_dir)
train_dataset = ants_dataset + bees_dataset

print(len(train_dataset))

img, label = train_dataset[5]
img.show()
二.tensorboard绘图
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter('123')  #draw是新建文件夹的名字

#绘制y = 2x的图
for i in range(100):
    writer.add_scalar('y = 2x', 2 * i, i)   #先y轴后x轴

writer.close()

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

writer = SummaryWriter('123')
image_path = 'dataset/train/ants/57264437_a19006872f.jpg'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)    #tensorboard读取numpy 要先转化

writer.add_image('test', img_array, 1, dataformats='HWC')  #名称 数据 第几步 数据格式(通道是第几个)

#绘制y = 2x的图
for i in range(100):
    writer.add_scalar('y = 2x', 2 * i, i)

writer.close()

三.tensorforms的使用
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

img_path = 'dataset/train/bees/44105569_16720a960c.jpg'
img = Image.open(img_path)

writer = SummaryWriter('pic')

#transforms相当于一个工具箱 取出一个类ToTensor
#可以实现将PIL或numpy转化为tensor这个数据类型
#tensor包含了很多神经网络的参数 如梯度
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)

#writer可以读取numpy和tensor
writer.add_image('tensor_img', tensor_img)

writer.close()
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

img = Image.open('dataset/train/bees/149973093_da3c446268.jpg')
writer = SummaryWriter('456')

#ToTensor
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
writer.add_image('tensor_img', tensor_img)

#Normalize 每个元素减去mean除以std
#第一个参数mean第二个参数std  三个通道
trans_norm = transforms.Normalize([1, 2, 3], [0.5, 0.5, 0.5])
img_norm = trans_norm(tensor_img)
writer.add_image('Normalize', img_norm, 2)

writer.close()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号