PyTorch深度学习快速入门
- 1.PyTorch环境配置及安装
- 2.python编辑器的选择、安装、配置(pycharm、JupyTer安装)
- 3.为什么torch.cuda.is_available()返回false
- 4.python学习中两大法宝函数(也可用在pytorch)
- 5.pycharm和jupyter(究bi特)使用及对比
- 6.pytorch加载数据初认识
- 7.dataset类代码实战
- 8.TensorBoard的使用(一)
- 9.TensorBoard的使用(二)
- 10.Transforms的使用(一)
- 11.Transforms的使用(二)
- 12.常见的Transforms(一)
- 13.常见的Transforms(二)
- 14.torchvision中的数据集的使用
- 15.DataLoader的使用
1.PyTorch环境配置及安装

 
 
 
 
 https://repo.anaconda.com/
 
 
 
 
 
 
 
 在开始菜单打开Anaconda prompt
 在命令行窗口看见base就是安装成功
 
 
 我们要检查显卡的驱动是否正确安装
 
 看到GPU正常显示型号,则显卡驱动已经正确安装了
 
 在正确安装pytorch之前
 我们要学会如何正确管理环境
 因为我们之后在不同的项目、代码需要的环境是不一样的
 有的代码需要pytorch0.4、有的需要1.0
 conda create -n pytorch python=3.6
 
 
n表示name的意思,pytorch就是这个环境的名字
 python=3表示要安装的包
 
 
 conda activate pytorch用来激活这个环境
 左边括号里面的就是环境的名称
 
pip list用来查看环境中有哪些工具包
 
 但其中没有我们需要的pytorch
 下面我们开始安装pytorch

 
 
 我们需要知道自己GPU的型号

 
 没有显卡 CUDA选择None

 
conda9.2以上要确保我们的驱动版本大于396.26
 我们要先查询一下自己的驱动版本nvidia-smi
 

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

 
 
使用python
 import torch
 观察pytorch是否安装成功
 
使用torch.cuda.is_available()这个命令观察是否可以使用GPU
 
 显示false是因为cuda下错版本了,要与自己的电脑对应起来
 比如我的
 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

3060最低要11.1的cuda
2.python编辑器的选择、安装、配置(pycharm、JupyTer安装)

 
 
 选择地址和环境
 
 
 
 
 
 下面检测一下pycharm是否成功导入了conda的运行环境
 torch.cuda.is_available()
 
 
 
 jupyter是默认安装在外面的base环境中的
 但我们的base环境是没有安装pytorch的
 所以这个jupyter无法使用pytorch
 我们可以在base环境中安装pytorch或者在pytorch环境中安装jupyter
 我们使用第二种方法
 先进入pytorch环境
 conda activate pytorch
 
 我的pytorch环境中没有
 
使用conda install nb_conda安装
 
 
安装完成后输入jupyter notebook
 
 
 

 http://localhost:8888/?token=f0d9cb3f4543dceeb4737d957381b4c3ab37070ce474b819


 
 点击shift+回车运行代码块
 torch.cuda.is_available()
如果是中文用户名可能会运行不了
 在环境变量下做如下修改
 
%systemroot%\TEMP
 
 %USERPROFILE%\AppData\Local\Temp

 
3.为什么torch.cuda.is_available()返回false

 
4.python学习中两大法宝函数(也可用在pytorch)

 
 
 
 输出只有一行的,可以点击此刻页面最左侧第2列第一个按钮“Soft-warp”

 查看torch.cuda
 我们可以看见之前用的is.available
 
 
 有_表示它是一个函数
 
5.pycharm和jupyter(究bi特)使用及对比
首先是pycharm
 
 
 如何确定这个文件使用的是我们的pytorch的cuda环境呢
 
 
 
 新建一个python文件
 
 如何运行这个文件
 我们要添加相应的python解释器
 
 
 
 
 
 点击确定就OK了

 
我们也可以直接在python控制台
 
 
 
 
 
 
 在里面创建一个新的文件
 先选择相应的环境
 
 
 
 
 
 
 
 
 

 
 
 
6.pytorch加载数据初认识

 https://pan.baidu.com/s/1jZoTmoFzaTLWh4lKBHVbEA 密码: 5suq
 可以下载一下数据集
 
 这个数据集分为train(训练数据集)和val(验证数据集)
下面是train
 
 

 这是一个识别蚂蚁和蜜蜂对他进行二分类的一个数据集
 其中ants和bees这两个文件的名称就是label
还有其他的形式
 
 告诉我们训练的图片是什么样子
 
 告诉我们训练的label是什么样子
 
 
或者我们也可以将label直接写在图片名称上面
下面说明如何使用dataset类
 
 或者

 
7.dataset类代码实战

使用控制台进行一个调试
 
 
 将数据集放到项目中,并且重命名为dataset
 
 
 
 我们要获取图片的地址
 根据def getitem(self, idx):中的idx这个索引去获取
 先去获取所有图片地址的一个列表
 使用OS去获取
 
 

 

 上面我们就是获得了所有图片的地址
下面我们要获取每一个图片
 
下面考虑这个数据有多长
 
 
 
 
如果我们想要获取蜜蜂的数据集
 
 我们训练数据集就是这两个数据集的一个集合
  如果我们将数据集进行另外一种形式的表达
如果我们将数据集进行另外一种形式的表达
 
 每一张图片对应的label

8.TensorBoard的使用(一)

 tranform可以我们的图像统一到同一个尺寸
 或者对图像中的每一个数据进行一个类的转换

 我们一般想知道我们的训练过程中的loss是如何变化的
 通过这个loss知道我们的训练过程是否安装我们预想的变化
 我们也可以从相应的loss中去看一下我们选择什么样的模型

 上面这个图就是在外面的2974步输入的图像
这个TensorBoard可以帮助我们探究一些模型在不同的阶段是如何输出的

 首先打开项目文件夹,设置环境
 

 
 
查看如何使用
 

 
 
 tag就是图表的title
 
 scalar_value是我们对应的数值,y轴
global_step是我们训练到多少步,x轴


 
 我们没有还没有安装tensorboard这个包
 
 
 
 
 
 如果在一台服务器上有好几个人训练
 可能端口会冲突
 我们可以指定一下这个端口
 tensorboard --logdir=logs
 
 
 
 
 
 
 
 write写入一个新的事件当中
 其实也进入了上一个事件当中
 就会出现上面的情况
第一种方法
 我们可以将对应的logs下面的文件全部删除
 
 
第二种方法
 
9.TensorBoard的使用(二)


 
 其中的img_tensor要么是torch_tensor型,要么是numpy.array型。。。
 
 
 我们这边的图片类型是不满足要求的
我们安装一下opencv
 
 
 
 转换为numpy型

 



 
 
10.Transforms的使用(一)

 transforms主要用来对图片进行一些变换
 
 
 左边的structure可以看它的结构
 

 
 
 我们上面就是将img类型的图片转换为我们tensor类型的一个图片
 
 
11.Transforms的使用(二)
我们为什么需要tensor这个数据类型
 
 tensor包装了我们神经网络所需要的一些参数
 我们在神经网络中一般先把数据转化为tensor型,然后进行一些训练
 

 我们上面学习了PIL Image类型的读取
 那么如何读取numpy类型的呢
 最常用的就是使用opencv
我们安装一下OpenCV
pip install opencv-python( conda install py-opencv)

 
 
 
 
12.常见的Transforms(一)

 
 
 
 compose是将图片进行一个中心的裁剪然后转换为tensor
 
 
 
_ _ cal l_ _ 可以直接调用


 输入必须是一个PIL Image或者numpy类型转换为一个tensor类型

 
 
 
 归一化
 输入必须是一个tensor类型
 用平均值和标准差对张量图像进行归一化
 
 
 
 
 
 输入的img_tensor有三个通道,人为设置均值和标准差都是0.5,
 然后利用公式算的输出值img_norm

 下面就是我们归一化后的一个结果
 
 
 
 
 
 一般图像多少RGB,三通道

13.常见的Transforms(二)

输入是PIL Image类型
 
 
 尺寸由原来的3200 * 3200 变为 512 * 512
 输出的是PIL Image类型
 如果我们想要在tensorboard进行显示的话
 我们要将img_resize变为totensor的一个数据类型
 

 
 
 
 当你对一个图像应用trans_compose变换时,它首先会使用trans_resize_2进行尺寸调整,然后使用trans_totensor将PIL图像转换为PyTorch的Tensor。
这个参数是个列表
 其实就是将resize变换和totensor合并了
 所以列表两个参数代表这两个过程合并。

 
 
下面我们看另外一个方法
 随机裁剪
 
 
 
 
 
 
 
 
 
14.torchvision中的数据集的使用
介绍如何将数据集和我们的transforms结合在一起
 在科研当中一些标准的数据集如何去下载、组织、查看、使用
 
 下面是官网提供的数据集
 
比如其中的CIFAR10数据集一般用于物体识别
 
root表示数据集在什么位置
 train为true的话表示为训练集、false表示为测试集
 transform表示我们想对训练的数据集进行一个什么样的变化
 target_transform表示对target进行一个transform
 download如果为true的话,会从网上自动给我们下载这个数据集

 torchvision.models中会提供一些预训练好的神经网络模块
 
介绍如何将数据集和我们的transforms结合在一起

 这里会在我们的文件夹下创建dataset,并且下载CIFR10数据集到其中
 
 
 前面是我们的输入图片
 后面是我们的target类别,这里将我们的真实类别表示为一个数字3
 如果target为0,就是airplane
 

如果我们想要看一下这个图片
 
 
下面介绍一下CIFAR10这个数据集
 6万张32 * 32像素的彩色图片,且分为10个类别
 5w训练,1w测试
 
 下面和我们的transform进行联动
 因为我们的原始图片是PIL Image
 如果要给我们的pytorch进行使用,需要转为tensor数据类型
 这里我们就使用transform

 这里就是一个tensor数据类型
 我们也可以使用我们的tensorboard进行一个显示
 比如我们想显示测试数据集中的前10张图片
 
 
 
我们下载数据集的时候,可以直接在迅雷上使用URL链接进行下载
 
 