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

PyTorch学习笔记(1)读数据与可视化

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

PyTorch学习笔记(1)读数据与可视化

文章目录
    • @[toc]
  • 环境准备
  • Dataset的使用
    • 图片读取
      • 单张
      • 多张
    • 完整代码
    • 控制台运行查看结果
  • TensorBoard的使用
    • 显示图像
环境准备
  1. 安装 anaconda(无脑安装即可)
  2. 下载 PyTorch(网上找个好教程,注意版本匹配)
  3. Jupyter notebook/Pycharm调用Anaconda虚拟环境
Dataset的使用

为方便深度学习项目构建数据集,Pytorch 为我们提供了 Dataset 类。

Pytorch 的 dataset 类是一个抽象类,继承 dataset ,需要实现它的__getitem__()方法和__len__()方法。

图片读取

数据集目录如下:

单张
from PIL import Image	# 使用 Image 处理图片

img_path = r"dataset/train/ants_image/1.jpg"	# 为了方便项目迁移,使用相对路径;前面加 r ,就不需要考虑转译了(Windows和linux文件路径存在斜杠上的差异)

img = Image.open(img_path)

在 Python Console 里可以清晰地查看变量,特别方便。

多张
import os

root_dir = r"dataset/train"
label_dir = r"ants_image"
path = os.path.join(root_dir,label_dir)

# 读取整个目录
img_path = os.listdir(path)
# 在控制台可以输出
# img_path[0]
# Out[14]: '1.jpg'

img_name = img_path[0]
img_item_path = os.path.join(path,img_name)
# 拼接得到一张图片的相对路径
img = Image.open(img_item_path)
完整代码
from torch.utils.data import Dataset
from PIL import Image
import os

# 继承 Dataset
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)

    # 从list中获取
    def __getitem__(self, index):
        img_name = self.img_path[index]
        img_item_path = os.path.join(self.path,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"
label_dir = "ants_image"
ants_dataset = MyData(root_dir,label_dir)
控制台运行查看结果 TensorBoard的使用

Tensorboard 原本是 TensorFlow 的可视化工具,可以用于记录训练数据、评估数据、网络结构、图像等,并且可以在 web 上展示,对于观察神经网络的过程非常有帮助。PyTorch 也推出了自己的可视化工具,一个是 tensorboardX 包,一个是 torch.utils.tensorboard ,二者的使用相差不大。

TensorBoard 通过运行一个本地服务器,来监听 6006 端口。在浏览器发出请求时,分析训练时记录的数据,绘制训练过程中的图像。

测试案例如下:

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter('logs')
# y = 2x
for i in range(100):
    writer.add_scalar("y=2x",2*i,i)
    
writer.close()
  • 右击 run 执行代码
  • 输入 tensorboard --logdir=logs 进行查看( logs 为自己取的文件夹名)

tensorboard --logdir=logs --port=6007 可以换端口(默认 6006 端口,但当多人在同一服务器训练时就会产生冲突)

如果不更改标题,只更改坐标轴再次运行,则会出现拟合。

显示图像
img_path = "dataset/train/ants_image/1.jpg"
img = Image.open(img_path)
img_array = np.array(img) # 必须转化图片格式
# print(img_array.shape)
writer.add_image("test",img_array,1,dataformats='HWC')

因为有默认的 shape 格式,因此得进行调整,加上 dataformats='HWC'

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

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

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