pytorch+深度学习_小土堆(小儒专用)

学习链接:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】

0、安装 P1/2

先在anaconda中创建一个虚拟环境叫做pytorch

conda create -n pytorch python=3.6

之后可以激活这个环境

conda activate pytorch
conda deactivate

但此时这个名字叫做“pytorch”的房间里面还是没有pytorch包(相当于只是一个新建文件夹)
真正的pytorch安装链接:pytorch官网
我的这个实验室电脑没有独显,所以选择CPU版本
在这里插入图片描述

conda install pytorch torchvision torchaudio cpuonly -c pytorch

记录一下有独显的电脑,CUDA 最好选择9.2,因为10以上有时候会有问题,我之后安装看一下
首先检查电脑是否有独显,打开cmd.exe,输入nvidia -smi,CUDA9.2以上只支持Driver Version>396.26以上
在这里插入图片描述
然后可以在pycharm中使用,或者用Jupiter
首先先进入pytorch虚拟环境,然后安装ipython包

conda install nb_conda

然后输入

jupyter notebook

酱酱,,like this:
在这里插入图片描述

然后再google网页中就有了
在这里插入图片描述
之后选择虚拟环境pytorch
小tip:shift+enter就是到下一个代码块
在这里插入图片描述
False是因为我的电脑没有独显
参考链接:pytorch安装

** python学习两大法宝函数P4 **

  1. dir():打开,看见工具箱(包)中有什么
    小tip:ctrl+f可以搜索对应模块
  2. help():说明书,能知道每个工具的使用方法

pycharm和pycharm控制台和jupyter的区别
在这里插入图片描述

1、导入数据P6/P7

导入数据使用两个类:
Dataset:
Dataloader:
下载数据集:蚂蚁蜜蜂分类数据集
导入Dataset类

from torch.utils.data import Dataset

jupyter运行,之后使用help()或者Dataset??可以看到官方的帮助文档

安装opencv包的时候学习到了一个新方法,不是再打开anaconda prompt,而是直接在pycharm里面的终端(terminal)进行:
在这里插入图片描述
这个语句显示有问题,我在anaconda.org中使用另一个语句下载的cv2

conda install -c fastchan opencv

土堆(up)觉得下载有点太大了,就换成了另一个语句来导入数据

from PIL import Image

然后在控制台导入图片地址:
在这里插入图片描述

from torch.utils.data import Dataset
from PIL import Image
import os #python中系统的库
class MyData(Dataset):#创建一个自已的类MyData,继承Dataset中的内容
    def __init__(self,root_dir,label_dir):#初始化类,为整个类提供全局变量root_dir,label_dir
        self.root_dir = root_dir
        self.label_dir = label_dir
        self.path = os.path.join(root_dir,label_dir) #将根路径"hymenoptera_data/hymenoptera_data/train"和ants路径"ants"合并
        self.img_path = os.listdir(self.path) #获取这个路径下所有图片的列表

    def __getitem__(self, idx):
        img_name = self.img_path[idx] #获得这个图片的名称:'0013035.jpg'
        img_item_path = os.path.join(self.root_dir,self.label_dir,img_name) #获得了对应序号的图片的相对路径
        img = Image.open(img_item_path)
        label = self.label_dir #ants or bees
        return img,label #返回图片和图片所属的类别
    def __len__(self):
        return len(self.img_path) #返回图片列表的长度

root_dir = "hymenoptera_data/hymenoptera_data/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)
train_dataset = ants_dataset + bees_dataset

2、tensorboard的使用 P8/P9

(1)、安装tensorboard包

conda install -c conda-forge tensorboard

(2)、SummaryWriter类

查看help小tips:在pycharm中,按下ctrl+点击对应的类名(SummaryWriter)
A、add_scalar()函数

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
for i in range(100):
    writer.add_scalar("y = x",i,i)  # scalar: 标量
writer.close()

运行后会生成logs文件夹,可以在pycharm中的终端开出一个端口来看这个图像,具体操作:
在这里插入图片描述

之后打开端口对应的网页就能看到图像
在这里插入图片描述B、add_image()函数

# add_image()函数:画图片
from PIL import Image
import numpy as np
img_path = "hymenoptera_data/hymenoptera_data/train/ants/0013035.jpg"
img = Image.open(img_path)
print(type(img))
img_array = np.array(img)
print(type(img_array)) #转换成numpy类型才能输入到add_image中

writer.add_image("test",img_array,1,dataformats='HWC') #dataformats='HWC':代表图片格式,可以通过控制台查看
writer.close()

在这里插入图片描述

3、transforms的使用 P10/P11

是啥:pytorch提供的torchvision.transforms 模块是专门用来进行图像预处理的,包括对图片进行剪切、翻转、平移、仿射等操作。
请添加图片描述

4、torchvision中数据集的使用 P14

tochvision主要处理图像数据,包含一些常用的数据集模型转换函数等。torchvision独立于PyTorch,需要专门安装。
torchvision主要包含以下四部分:
torchvision.models: 提供深度学习中各种经典的网络结构、预训练好的模型,如:Alex-Net、VGG、ResNet、Inception等。
torchvision.datasets:提供常用的数据集,设计上继承 torch.utils.data.Dataset,主要包括:MNIST(手写数字)、CIFAR10/100(物体识别)、ImageNet、COCO(目标检测)等。
torchvision.transforms:提供常用的数据预处理操作,主要包括对Tensor及PIL Image对象的操作。
torchvision.utils:工具类,如保存张量作为图像到磁盘,给一个小批量创建一个图像网格。
来源:添加链接描述

2、入门:

张量: 基于向量和矩阵的推广,是一种新的数据类型

张量:基于向量和矩阵的推广,是一种新的数据类型
0维张量 代表的是标量(数字)
1维张量 代表的是向量
2维张量 代表的是矩阵
3维张量 时间序列数据 股价 文本数据 单张彩色图片(RGB)
4维 = 图像
5维 = 视频
它的核心是一个数据容器,多数情况下,它包含数字,有时候它也包含字符串,但这种情况比较少。因此可以把它想象成一个数字的水桶。
for example:
表示一个图像可以用三个变量表示:(width, height, channel) = 3D
那么表示100000张图像可以用4个变量:4D张量
(batch_size, width, height, channel) = 4D

**创建tensor **
torch.tensor(data, dtype=None, device=None,requires_grad=False)

x = torch.empty(5, 3) # 构造一个未初始化的5*3的矩阵
x = torch.rand(5, 3)  # 构造一个随机初始化的矩阵
x = torch.zeros(5, 3, dtype=torch.long) #构造一个矩阵全为 0,而且数据类型是 long(长整型,是long int的缩写,长度至少32位).
x = torch.tensor([5.5, 3]) #构造一个张量 输出:tensor([5.5000, 3.0000])
x = x.new_ones(4, 3, dtype=torch.double) 
# 创建一个新的全1矩阵tensor,返回的tensor默认具有相同的torch.dtype tensor类型(dtype=torch.float64)和torch.device 返回的设备(device=torch.device('cuda:0'))
# 也可以像之前的写法 x = torch.ones(4, 3, dtype=torch.double)
3、pytorch的主要组成模块:
(1)、基本配置
  1. 导入包
import os 
import numpy as np 
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
import torch.optim as optimizer

其他:比如涉及到表格信息的读入很可能用到 pandas ,对于不同的项目可能还需要导入一些更上层的包如cv2等。如果涉及可视化还会用到 matplotlib、seaborn 等。涉及到下游分析和指标计算也常用到 sklearn

  1. 设置超参数
batch_size = 16
# 批次的大小
lr = 1e-4
# 优化器的学习率
max_epochs = 100

除了直接将超参数设置在训练的代码里,我们也可以使用yaml、json,dict等文件来存储超参数,这样可以方便后续的调试和修改

  1. 设置GPU:默认是CPU,为了加速模型的训练,需要调研GPU
# 方案一:使用os.environ,这种情况如果使用GPU不需要设置
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1' # 指明调用的GPU为0,1号
# 方案二:使用“device”,后续对要使用GPU的变量用.to(device)即可
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu") # 指明调用的GPU为1号
(2)、数据读入

Dataset+DataLoade:Dataset定义好数据的格式和数据变换形式,DataLoader用iterative的方式不断读入批次数据。

学习链接:深入浅出pytorch

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭小儒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值