1 Pytorch 环境配置

Anaconda 安装

显卡配置(驱动+CUDA Toolkit)

image-20230718205108412

有序地管理环境

初始环境:base

切换环境使用不同的pytorch版本

1
2
3
4
//输入命令,安装python
conda create -n pytorch python=3.7
//输入命令,激活环境
conda activate pytorch
image-20230718210634806
1
2
//查看工具包
pip list
image-20230718210727247

Pytorch安装

官网:https://pytorch.org/

任务管理器查看是否有英伟达显卡

image-20230718212126175

CUDA推荐使用9.2

查看驱动版本

image-20230718212421748

大于396.26可使用

pytorch环境下输入命令,安装9.2版本

1
2
conda install pytorch torchvision cudatoolkit=9.2 -c pytorch -c defaults
c numba/label/dev

image-20230718213642078

报错,因为下载速度太慢

image-20230718215019872

清华源可以下载cpu版本:https://blog.csdn.net/zzq060143/article/details/88042075

如果找不到源,需要把命令中的 https 改成 http

下载gpu版本教程:https://www.bilibili.com/read/cv15186754

image-20230718233907433

返回时False,因为装的是cpu版本,gpu版本才返回true。cpu版本学习阶段可以使用。

image-20230719121436991

2 Python编辑器的选择

Pytorch安装

官网:https://www.jetbrains.com/pycharm/

下载Community版本

Pytorch 配置

create new project

需要自己配置解释器

image-20230719100104852

添加python.exe

image-20230719103201967

Conda Environment可能找不到python.exe,选择System Environment添加

https://blog.csdn.net/weixin_43537097/article/details/130931535

打开Python Consle

import torch

输入torch.cuda.is_available(),CPU版本返回false

image-20230719103754349

右侧工具栏可实时查看变量

image-20230719104030691

Jupyter 安装

在Pytorch环境中安装Jupyter

在pytorch环境中安装一个包

image-20230719131043395

运行Jupyter

image-20230719131433335

创建代码

image-20230719131509833

shift + enter运行代码块

image-20230719131558361

3 Pytorch学习中的两大法宝函数

image-20230719140047441

总结:
dir()函数,能让我们知道工具箱以及工具箱中的分隔区有什么东西。
help()函数,能让我们知道每个工具是如何使用的,工具的使用方法。

打开Pycharm,测试这两个工具函数

1
dir(torch.cuda.is_available)
image-20230719141153933

前后有双下划线,表明变量不能修改,说明是函数,不是分割区

dir和help里面函数后面的括号记得去掉

1
help(torch.cuda.is_available)
image-20230719141419656

4 Pycahrm及Jupyter使用对比

在Pycharm中新建项目

在File-Setting中可查看该项目是否有Pytorch环境

image-20230719141734242

新建Python文件

image-20230719141855063

为Python文件设置Python解释器

image-20230719142138096 image-20230719142305822

运行成功

image-20230719142342738

也可以直接在Python控制台输入语句,直接输出结果

image-20230719142538947

Jupyter新建项目及使用

image-20230719142709123

三种代码编辑方式对比

用三种方式运行同一段错误代码

Python文件

image-20230719142919805

报错,字符串和整型相加不允许

修改b后,运行成功

image-20230719143050346

Python控制台

image-20230719143236205

修改b后

image-20230719143314888

如果发生错误,代码可读性下降

shift+enter可以以多行为一个块运行

image-20230719143806537

Jupyter

image-20230719143423641

修改b后

image-20230719143509947

·总结

image-20230719144020108

5 Pytorch加载数据初认识

image-20230719145042656

下载蚂蚁/蜜蜂数据集

创建read_data.py文件

1
from torch.utils.data import Dataset

Jupyter中可查看Dateset内的函数

image-20230719150017028

6 Dataset类代码实战

第一次打开终端报错解决:https://blog.csdn.net/qq_33405617/article/details/119894883

导入Image

1
from PIL import Image

将 “蚂蚁/蜜蜂” 数据集复制到项目中

image-20230719153011629 image-20230719153152359

Python控制台中读取数据

1
from PIL import Image

复制图片绝对路径,\改成\表示转义

1
img_path = "D:\\PytorchLearning\\dataset\\train\\ants\\0013035.jpg"

image-20230719153920417

1
2
# 读取图片
img = Image.open(img_path)

image-20230719154131158

1
2
img.size
# Out[5]: (768, 512)
1
2
# 查看图片
img.show()
image-20230719154934779

获取图片名称及路径

控制台方式

1
2
3
4
5
6
7
8
9
# ants文件夹相对路径
dir_path = "dataset/train/ants"
# 导入os
import os
# 将ants文件夹下的图片生成列表
img_path_list = os.listdir(dir_path)
# 获取第一张图片
img_path_list[0]
# Out[10]: '0013035.jpg'

python文件方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# python文件中.
# 每张图片的label就是所在的文件夹的名称
def __init__(self, root_dir, label_dir):
# 控制台
import os
root_dir = "dataset/train"
label_dir = "ants"
# 拼接路径
path = os.path.join(root_dir, label_dir)

# pyhton文件修改init函数
# 函数之间的参数不能相互使用,但是self制定了一个类中的全局变量,相当于c++的static
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)

# 控制台中
img_path = os.listdir(path)

# 获取每一个图片
# 修改 —__getitem__函数
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

# 控制台检验
idx = 0
# 注意这里是中括号
img_name = img_path[idx]
img_item_path = os.path.join(root_dir, label_dir, img_name)
img = Image.open(img_item_path)

数据集长度

1
2
def __len__(self):
return len(self.img.path)

创建实例

1
2
3
4
# 创建实例
root_dir = "dataset/train"
ants_label_dir = "ants"
ants_dataset = MyData(root_dir, ants_label_dir)

控制台运行

对象中包含init中的所有变量

image-20230719162922969
1
2
3
4
5
6
7
8
9

ants_dataset[0]
'''
Out[5]: (<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=768x512>, 'ants')
这段代码表示访问了一个名为"ants_dataset"的数据集中的第一个数据项。该数据项包含一张图片和一个标签。
图片格式为JPEG,具体尺寸为768x512像素,采用RGB颜色模式。标签为"ants",表示这张图片中的内容是蚂蚁(ants)。
'''
# 分别获取图片和标签
img, label = ants_dataset[0]

同时有蚂蚁和蜜蜂数据集

1
2
3
4
5
6
# 创建实例
root_dir = "dataset/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)

两个数据集集合

1
train_dataset = ants_dataset + bees_dataset

txt标签方式

修改数据集文件名,添加标签文件夹

image-20230719165632515

添加标签

标签txt的名称与图片名称一致,txt内容为标签值

image-20230719165752353