Pytorch深度学习笔记
1、大于或等于三维的张量没有名称,统一叫张量。
·点-----标量(Scalar)----0阶张量是标量----只有数值大小,没有方向,部分有正负之分
·线-----向量(Vector)----1阶张量是向量----有大小和方向,如(3,4)。
·面-----矩阵(Matrix)----2阶张量是二维数组---- 如[[1,2],[3,4]]
·体-----张量(Tensor)----3阶张量是三维数组
shape() #0阶张量是标量
shape(3) #1阶张量是向量
shape[2,3] # 2阶张量是二维数组
shape[2,1,3] # 3阶张量是三维数组
深度学习的基本原理
深度学习的框架是神经网络模型,但它研究多层隐藏层的深度神经网络。
神经网络的重要特性是他能够从环境中学习,神经网络是一个学习过程,在训练过程中,不断调整网络各层的权值矩阵。
卷积神经网络
卷积神经网络(Convolution Neutral Network) CNN。
常用的模型评估指标
·Confusion Matrix(混淆矩阵)
·Precision(精准率)
·Recall(召回率)
·F1-score
·PRC
·ROC和AUC
·IOU
Pytorch 入门1
Pytorch中的所有操作都是基于Tensor(张量)的。
自动求导
在训练神经网络的过程中,最常用的算法是反向传播算法。参数(模型权重)根据损失函数相对于给定参数的梯度进行调整。损失函数计算神经网络产生的期望输出和实际输出之间的差值,目标是使损失函数的结果尽可能接近零。该算法通过网络方向反向遍历来调整权重和偏差,以重新训练模型。
Pytorch神经网络
训练一个神经网络需要大量的数据,称为数据集。数据集一般分为3类。训练集(training set)、验证集(Validation set)、测试集(Test set)。
一个Epoch就等于使用训练集中的全部样本训练一次的过程,这个过程是指一次正向传播(Forward Pass)和一次反向传播(Backward Pass)。
当一个Epoch的样本(也就是训练集)数量太过庞大时。进行一次训练可能会消耗过多时间,并且每次训练都是用训练集的全部数据也不是必要的,因此我们需要把整个训练过程分成多个小块,也就是分成多个Batch进行训练。
一个Batch训练指使用一部分数据进行训练。
数据加载和处理
·dataset:加载数据集(Dataset对象)
·batch_size:batch大小
shuffle:是否每个Epoch都打乱数据。
num_workers:使用多进程加载的进程数,0表示不使用多线程。
迁移学习
模型保存和加载
在深度学习的训练过程中,我们经常需要保存模型的多个参数以便将来重新加载。这对于中断的训练恢复,或者用于模型的分享和部署都是非常重要的,Pytorch提供了简单的APi函数来保存和加载模型。最常见的方法是torch.save来保存模型的参数,然后通过torch.load加载模型的参数。
# 保存
torch.save(model.state_dict(),PATH)
# 加载
model = THEModelClass(*args, **kwargs(
model.load_state_dir(torch.load(PATH))
model.eval()
k近邻
如果一个样本附近的k个最近(特征空间中最邻近的k个)样本的大多数属于某一个类别,则该样本也附属这个类别。
即给定一个训练集,对于新输入实例,在训练集中找到与该实例最近的k个实例,这k个实例中的多数属于某个类,就把该输入实例分类到这个类中。