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链接进行下载