PyTorch入门备忘-1- 用Dataset自建数据集-及Jupyter与Pycharm简易入门-灵析社区

小乔学算法

随手手册,希望对初学者有用,更适用于主技术栈非python,偶尔需要用python和pytorch的JYM的入门速查。


想从事AI方向的JYM,是绕不开Python和Pytorch,对于有经验的程序员来说,看如下三文,入门很是OK了,

当然在此前需要看看python的基础语法、数据类型等,但对于有经验的程序员来说这费不用多少时间了,语法都类似。

Python+PyTorch+Anaconda安装配置

PyTorch + Anaconda3 + Pycharm 入门工程

LLM工具:Pycharm、PythonConsole及Jupyter比较与Jupyter安装与入门 —— 看比较部分即可

入门之后就到了具体学习,看视频 (文章底部有参考链接,并非广告,这个作者我也不认识,该文章与之相对是和者的学习总结)。 有了一遍视频学习之后,来一个速度手册, 便于快速恢复。 —— 这是笔者针对目前编程语言众多,各自占不同山头,程序员得知道多种语言技能的处理办法。

笔者在这类文章里贴出的代码会尽可能提供全注解,便于复查时快速恢复记忆中的代码片段、py语法结构等。

PyTorch

PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。

2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的可续计算包,提供两个高级功能: 具有强大的GPU加速的张量计算(如NumPy)。 包含自动求导系统的深度神经网络。

用Dataset自建数据集

Dataset:pytorch提供一种方式去获取数据及其方式。

流程:先按规则组织数据集,再创建一个继承Dataset的类,来引用该数据集。

有关如何组织数据集可参考“附-数据集”部分内容; 目前笔者在想的是如何与有无监督学习关联起来。

数据处理介绍

数据集从杂乱无章的数据神经网络训练可用的数据之间需要经过Dataset和DataLoader两个过程:

  1. Dataset:提供一种方式去获取数据及label
  2. DataLoader: 对各种数据进行打包成数据集并编号,比如送去神经网络之前要按batchsize对数据进行打包再送入, 或对数据进行压缩等,为后面的网络或数据训练等操作做准备

用Jupyter查看dataset的帮助

用Jupyter查看帮助-段落清晰
#1. 启动
jupyter node

#2. 打开浏览器 
http://localhost:8888/

3. 点击右侧 [new] --> Python3 (ipykernel) 

4. 在浏览器的控制台里输入
Dataset ?? 
# 或 ```help(Dataset) ```

输出

实战代码

步骤1. 创建工程

创建一个conda虚拟环境的工程,见PyTorch + Anaconda3 + Pycharm 入门工程

步骤2. 准备数据

将数据复制一工程下

通过该数所集,我们知道:

  1. 该数据是用于区别蚂蚁和蜜蜂的二分类数据集
  2. 数据是按"文件夹即标签"的形式组织的
以什么样的方式准备数据,见本章节的数据集

步骤3. 代码

  1. 安装图片依赖包
pip install pillow
pip install Image

# 也可以用cv2: pip install opencv-python  
图片依赖包的介绍 CV2和PIL opencv原视频因为网络问题采用了PIL,笔者试了安装上了 pip install opencv-python
  1. 代码
tip: 在编码过程中,如果需要对数据或路做测试,可以在pycharm中打开python console控制台操作,pycharm会根据输入自动显示对应类或包的属性方法也可以查看变量的返回值等,见 pycharm和Python常用操作 将鼠标放在pycharm的对应文件夹,用"CTRL+C”就可以将文件夹名称复制下来,配置数据路径时会用到

# 路径
import os.path

# 引入Dataset
from torch.utils.data import Dataset

# 图像操作库
from PIL import Image


# import cv2
# 继承:Dataset
class MyData(Dataset):

    # 实始化函数
    def __init__(self, root_dir, label_dir):
        """
         根目录:root_dir
         用目录标签:label_dir
        """
        # 创建时给赋值的变量为全局变量 self.xxx
        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)
        pass

    def __getitem__(self, idx):
        """
          返回一张图片
         :param idx: 图片所有位置index 从0开始
         :return: image对象与标签名
         """

        # 得到文件名
        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: 长度
        """
        return len(self.img_path)


if __name__ == '__main__':
    # 指定数据文件夹
    root_dir = "data/train"
    
    # 标签文件夹
    ant_label_dir = "ants"
    bees_label_dir = "bees"
    
    # 某一种签检集
    ants_dataset = MyData(root_dir, ant_label_dir)
    bees_dataset = MyData(root_dir, bees_label_dir)
    
    # 标签合集 - 拼接数据集
    train_data = ants_dataset + bees_dataset
    # 打印数据集长度
    print(len(train_data))

输出结果

此种操作和java完全不同

Pycharm和Python常用操作

Dir与Help

  • dir()函数,能让我们知道工具箱以及工具箱中的分隔区有什么东西
  • help()函数,能让我们知道每个工具是如何使用的,工具的使用方法
dir(pytorch) 
dir(pythorch.xxx)
help(Dataset)

常用操作

  • 得到图片相对地址

  • 注释快捷 CTRL + / 注释
  • 打开对就的帮助 将鼠标移入import 对应的包包, 按住CTRL点鼠标,会打开SummaryWriter的帮助文档

Python控制台

输入指令,右侧自动显示类的属性、方法或数据

from PIL import Image
img_path = "data/train/ants/0013035.jpg"
img = Image.open(img_path)
img.show("my")
img.show()
dir_path = "data/train/ants"
import os
img_path_list = os.listdir(dir_path)

可以将整个程序块复制到控制台,模拟程序代码进行测试

虚拟环境-Conda

Conda是运行在Windows、macOS和Linux上的开源软件包管理系统和环境管理系统。

Anaconda 主流的开源Python发行平台, 安装Anacoda会自动安装conda

Miniconda是一个免费的Conda最小安装程序。它是Anaconda的一个小型的引导版本,只包含conda、Python及它们所依赖的包和少量其他有用的包,比如pip、zlib和其他一些包。

PY的虚拟环境起到不同项目包版本隔离等的作用,现主流的虚拟环境有:

  • pipenv
  • conda
  • poetry
  • virtualenv
  • ...

python第三方库

www.360doc.com/content/22/…

常用库

OpenCV

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效 —— 由一系列C函数和少量 C++类构成,提供了Python、Ruby、MATLAB、java、cuda等语言的接口和机器学习的基础算法调用,实现了图像处理和计算机视觉方面的很多通用算法...(CV:Computer Vision,计算机视觉) 。

blog.csdn.net/weixin_4110…

安装的时候是 opencv_python,但在导入的时候采用 import cv2

# 方法一:直接安装
pip install opencv-python  

# 方法二 -- 官网下载安装.whl文件   
# https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv   
pip install opencv_python‑3.x.x‑cp36‑cp36m‑win_amd64.whl 

# 方法三 -- conda环境安装:  
conda install opencv-python

PIL

PythonWare公司提供了免费的图像处理工具包 PIL (Python Image Library), 该软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等...

blog.csdn.net/yohnyang/ar… Python图像处理库

安装

pip install pillow
pip install Image

使用

from PIL import Image             ##调用库
...

im = Image.open("E:\mywife.jpg")  ##文件存在的路径
im.show()

Pillow

Pillow是PIL的替代版本,PIL 软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。

Pillow为了解决PIL的两个问题:

  1. 不兼容setuptools
  2. 问题太多,更新太慢

数据集

总结三种组织方式:

  1. 文件夹名即为标签名
  2. 按训练所需图片与训练所需标签分类存储
  3. 文件名即为标签名
以下数据集展示的图片来自对教学的视频 规则也是笔者边学边记,如还有其他规则可以探讨

文件夹名即为标签名

文件夹内的内容

文件夹展示形式图片文件夹人容标签文件夹内容

按训练所需图片与训练所需标签分类存储

将数据集用另外一种表示,直接指明文件夹对应的数据类型。

适用于一种物种有较多数据类型的形式。

文件夹形式图片文件夹标签文件夹标签内文件格式
注意:图片文件夹中的文件名称与标签文件夹的名称有对应关系

文件名即为标签名

[参考]

PyTorch深度学习快速入门教程  
www.oschina.net/p/pil?hmsr=…
blog.csdn.net/m0_56729804…
blog.csdn.net/m0_51864191…

阅读量:2013

点赞量:0

收藏量:0