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

Pytorch 框架

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

Pytorch 框架

一、python , python 控制台, jupyter

注: 在jupyter 中使用torch,首先需要下载torch,然后进入到相应环境中打开jupyter。
新建文件时如下所示:

测试torch是否可用

import torch
print(torch.cuda.is_available()) #输出为 True 则可用
二、Pytorch加载数据

a. 数据集格式

输入为图片,文件夹名为标签

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/hymenoptera_data/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)

train_dataset = ants_dataset + bees_dataset

图片一个文件夹,标签一个文件夹

图片和标签的名称对应


标签文件夹内是类别

三、Tensorboard的使用

执行下面代码会自动创建一个tensorboard的logs文件

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")
# writer.add_image()
for i in range(100): 	
    writer.add_scalar("y=x", i, i)
writer.close()

打开此文件的方法

输入命令 :tensorboard --logdir=“输入logs的路径”
会看到有一个链接,打开对应这6006的端口

可以指定其他端口打开
输入命令:tensorboard --logdir=logs --port=6007

打开链接可以看到我们绘制的曲线

接下来我们添加图片

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer = SummaryWriter("logs")
image_path = "dataset/data/train/ants_image/0013035.jpg"
img_PIL =  Image.open(image_path)
img_array = np.array(img_PIL) # 这里注意我们输入的类型要是numpy或者string、tensor等
print(img_array.shape)
writer.add_image("test", img_array, 2, dataformats='HWC') # 加入dataformats='HWC'是内部三通道需要反向,否则会报错

可以直观的勘察到我们输入到模型中的图片数据,不同阶段的结果显示

三、transform

创建tensor

from PIL import Image
from torchvision import transforms

img_path = "dataset/data/train/ants_image/0013035.jpg"
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)

传入tensor来展示图片信息

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

img_path = "dataset/data/train/ants_image/0013035.jpg"
img = Image.open(img_path)
writer = SummaryWriter("logs")
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)

writer.add_image("Tensoer_img", tensor_img)

writer.close()


注意图片的输入输出类型

对图像的Tensor标准化

from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")
img = Image.open("dataset/data/train/ants_image/36439863_0bec9f554f.jpg")

# ToTensor
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("ToTensor", img_tensor)

print(img_tensor[0][0][0])
# Normalize
trans_norm = transforms.Normalize([1, 3, 5], [5, 3, 1]) # 第一个向量是三通道的 mean ,第二个是三通道的 std
img_norm = trans_norm(img_tensor)
print(img_norm[0, 0, 0])
writer.add_image("Normalize", img_norm)
writer.close()


小技巧
调整Pycharm, 不区分大小写进行比较
这里把首字母匹配关闭

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

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

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