深度学习
文章平均质量分 91
深度学习专栏,涵盖神经网络、优化策略、损失函数等基础知识,深入解析卷积模型、序列模型等高级应用。从入门到进阶,助力读者快速掌握深度学习精髓,实战项目助力技能提升。适合对人工智能感兴趣的读者,持续更新,不容错过。
一只小小的土拨鼠
这个作者很懒,什么都没留下…
展开
-
pytorch基础-使用 TORCH.AUTOGRAD 进行自动微分(5)
在训练神经网络时,最常用的算法是反向传播。在该算法中,参数(模型权重)根据损失函数相对于给定参数的梯度进行调整。为了计算这些梯度,Pytorch有一个名为 torch.autograd 的内置微分引擎。它支持自动计算任何计算图形的梯度。本例中考虑最简单的单层神经网络,输入x,参数w和b,以及一些损失函数。可通过以下方式在PyTorch中定义:import torchx = torch.ones(5) # input tensor,返回一个全为1 的张量,形状由可变参数sizes定义y = to原创 2022-05-03 23:16:29 · 1649 阅读 · 0 评论 -
pytorch基础-构建简单的神经网络(4)
神经网络由对数据执行操作的层/模块组成。 模块 torch.nn命名空间提供了建立自己的神经网络需要的所有构建 。pytorch中的每个模块都是 nn.Module 的子类。神经网络是一个是由其他模块(层)组成的模块。 这种嵌套结构允许轻松构建和管理复杂的架构。在接下来的部分中,将构建一个神经网络来对 FashionMNIST 数据集中的图像进行分类。(1)导入训练神经网络所需要的包import osimport torchfrom torch import nnfrom torch.原创 2022-05-03 00:17:00 · 2297 阅读 · 0 评论 -
PyTorch基础-数据的变换(Transforms)(3)
在上一节中自定义的数据集或者预加载的数据集得到的数据,并不总是以最终处理的形式出现在训练机器学习算法中。所以需要使用 变换 来处理数据并使其适合训练。所有 TorchVision 数据集都有两个参数,torchvision.transforms 模块提供开箱即用的几个常用转换:(1)transform修改功能和 target_transform修改标签(2)接受包含转换逻辑的可调用对象。FashionMNIST 特征是 PIL 图像格式,标签是整数。 对于训练,需要将特征作为归一化张量,并将标签原创 2022-05-02 17:27:57 · 2324 阅读 · 0 评论 -
PyTorch基础-自定义数据集和数据加载器(2)
ETL是用来描述将数据从来源端经过抽取、转换、加载至目的端的过程。在机器学习中处理数据集的流程为: 提取:从数据源提取数据。 转换:将我们的数据转换为张量形式。 加载:将我们的数据放入对象以使其易于访问。 一、加载数据集PyTorch 提供了两个数据原语: 分别是 torch.utils.data.Dataset和torch.utils.data.DataLoader可以在预加载的数据集或者自己的数据集上使用。其中Dataset表示存储样本及其对应的标签,用...原创 2022-04-30 23:57:53 · 3037 阅读 · 1 评论 -
Pytorch基础-对张量的定义、运算和维度操作全解析(1)
一、什么是张量tensor?张量是一种特殊的数据结构,与数组和矩阵非常相似。类似于Numpy 的ndarray。 在 PyTorch 中,我们使用张量对模型的输入和输出以及模型的参数进行编码。 张量都可以通过Numpy来定义、操作,通常存储在Nunpy数组,所以这就需要我们把数据转换为Numpy数组,目的就是把所有的输入数据转变为一个统一的标准,以便能够容易的处理。张量是根据一共具有多少坐标轴来定义。比如可以把二维张量看作为一个带有行和列的数字网格。这个行和列表示两个坐标轴,一个矩阵就是二维张量,矩原创 2022-04-29 23:05:38 · 3709 阅读 · 0 评论 -
Pytorch搭建常见分类网络模型------VGG、Googlenet、 MobileNetV3、ResNet50(1)
常见的分类网络都可以分为两部分,一部分是特征提取部分,另一部分是分类部分。1、特征提取部分的功能是对输入进来的图片进行特征提取 , 优秀的特征可以帮助更容易区分目标,所以特征提取部分一般由各类卷积组成,卷积拥有强大的特征提取能力 ;2、分类部分会利用特征提取部分获取到的特征进行分类 ,分类部分一般由全连接组成, 特征提取部分获取到的特征一般是一维向量,可以直接进行全连接分类。通常情况下,特征提取部分就是我们平常了解到的各种神经网络,比如VGG、Mobilenet、Resnet等等;而分类部分就是原创 2022-05-19 19:01:42 · 2891 阅读 · 0 评论 -
Pytorch搭建常见分类网络模型------VGG、Googlenet、ResNet50 、MobileNetV2(2)
接上一节内容:Pytorch搭建常见分类网络模型------VGG、Googlenet、 MobileNetV3、ResNet50(1)_一只小小的土拨鼠的博客-CSDN博客前言:AlexNet、VGG等经典的神经网络框架,一个共同特点是:整个网络由不同神经模块的串联构建。神经网络深度不断加深会造成过拟合和模型参数巨大等问题。解决主要方法是引入稀疏特性、将全连接层换成稀疏连接。Googlenet串并联网络结构便是由此提出。在串联网络中,每一层级的卷积核都是固定尺寸的,只能提取固定尺度的特征。基于这种原创 2022-05-23 01:16:02 · 3539 阅读 · 0 评论 -
Pytorch搭建常见分类网络模型------VGG、Googlenet、ResNet50 、MobileNetV2(3)
接上一节内容:Pytorch搭建常见分类网络模型------VGG、Googlenet、ResNet50 、MobileNetV2(2)_一只小小的土拨鼠的博客-CSDN博客原创 2022-05-24 18:28:32 · 1527 阅读 · 0 评论 -
Pytorch搭建常见分类网络模型------VGG、Googlenet、ResNet50 、MobileNetV2(4)
接上一节内容:前言:原创 2022-05-28 01:17:58 · 1407 阅读 · 0 评论 -
pytorch基础-优化模型参数(6)
现在我们有了模型和数据,是时候通过优化数据参数来训练、验证和测试我们的模型了。训练一个模型就是一个迭代的过程,在每次迭代(称为epoch)中,模型对输出进行猜测,计算猜测中的误差(损失),收集误差对其参数的导数(前一节中自动微分一样),并使用梯度下降优化这些参数。1、先决条件代码从前面关于数据集和数据装载器以及构建模型的章节中加载代码。PyTorch基础-自定义数据集和数据加载器(2)_一只小小的土拨鼠的博客-CSDN博客pytorch基础-构建简单的神经网络(4)_一只小小的土拨鼠的博..原创 2022-05-04 22:23:43 · 2571 阅读 · 0 评论 -
pytorch基础-保存和加载模型(7)
这一节的内容,将研究如何通过保存、加载和运行预测模型来保持模型状态。导入相应的包:import torchimport torchvision.models as models1、 保存和加载模型权重PyTorch 模型将学习到的参数存储在称为 state_dict 的内部状态字典中。 这些参数可以通过 torch.save 方法保存起来:model = models.vgg16(pretrained=True)#创建预训练模型vgg16,实例化torch.save(model.st原创 2022-05-05 20:07:25 · 1425 阅读 · 0 评论 -
网络通用设计准则
前馈网络在向后传递信息时,通过瓶颈层(高度压缩的层)时,会损失大量的有用信息,也就是遇到了表达瓶颈。当信息向后传播时,特征尺寸一般是要逐渐减小的,但是不要急剧减少,比如feature map直接从128x128减小到3x3,这样的网络是很难训练的。另外,特征维度(通道数)一般会逐渐增加,但是维度只是作为一种估计的手段,并不代表信息的多少,因为会丢弃相关结构等重要信息。我们知道,GoogLeNet的参数量只有Alexnet的1/12,而VGGNet的参数量却是Alexnet的3倍。2. 高维特征更易处理。原创 2022-09-02 17:34:04 · 168 阅读 · 0 评论 -
回归算法的评估指标
回归算法:对历史数据进行拟合,形成拟合方程。接下来使用该方程对新数据进行预测。下图中红线表示的是一元数据的拟合方程,如果数据是二元数据,那么它的拟合方程就是一个拟合平面,对于更高维的数据,它的拟合方程将更加复杂。对于回归算法,我们评价它的好坏,就是看它的预测结果与我们的真实结果的差异大小。在回归算法中,我们最常用的四种评估指标分别是:平均绝对值误差,均方误差,均方根误差,可决系数。..................原创 2022-08-11 23:35:36 · 7396 阅读 · 1 评论 -
pytorch--常用激活函数使用方法(21个)
2)Sigmoid的输出不是0均值的这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响。(1)容易出现梯度消失(gradientvanishing)的现象当激活函数接近饱和区时,变化太缓慢,导数接近0,根据后向传递的数学依据是微积分求导的链式法则,当前导数需要之前各层导数的乘积,几个比较小的数相乘,导数结果很接近0,从而无法完成深层网络的训练。ReLU有很多变种,RReLU是RandomReLU的意思,在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。.........原创 2022-07-16 23:09:16 · 8516 阅读 · 0 评论 -
pytorch参数初始化方法
N(mean,std)\mathcal{N}(mean,std)N(mean,std)中生成值,填充输入的张量或变量。用Diracδ\deltaδ函数来填充{3,4,5}维输入张量或变量。U(a,b)\mathcal{U}(a,b)U(a,b)中生成值,填充输入的张量或变量。从给定均值和标准差的正态分布N(mean,std)中生成值,填充输入的张量或变量。在线性层尽可能多的保存输入特性。从均匀分布U(a,b)中生成值,填充输入的张量或变量。......原创 2022-07-14 21:13:33 · 9977 阅读 · 0 评论 -
Pytorch ----注意力机制与自注意力机制的代码详解与使用
注意力机制的核心重点就是让网络关注到它更需要关注的地方 。当我们使用卷积神经网络去处理图片的时候, 我们会更希望卷积神经网络去注意应该注意的地方,而不是什么都关注 ,我们不可能手动去调节需要注意的地方,这个时候,如何让卷积神经网络去自适应的注意重要的物体变得极为重要。注意力机制 就是实现网络自适应注意的一个方式。一般而言,注意力机制可以分为通道注意力机制,空间注意力机制,以及二者的结合。SENet是通道注意力机制的典型实现。 重点是获得输入进来的特征层对应的每一个通道的权值 。通过学习的方式自动获取每个特征原创 2022-06-06 01:01:10 · 15871 阅读 · 3 评论 -
softmax与sigmoid函数的区别
sigmoid 函数用于多标签问题,选取多个标签作为正确答案,它是将任意值归一化为[0-1]之间,并不是不同概率之间的相互关联,且由于远离0的部分梯度较小, 容易出现梯度消失现象 。将实数值映射到(0,1)的区间。sigmoid详细解释:Sigmoid函数解析__Sumor的博客-CSDN博客_sigmoid函数 当x趋近于负无穷时,y趋近于0;当x趋近于正无穷时,y趋近于1;当x=0时,y=1/2。用sigmoid函数近似得到不同斜率的线性函数,只要x的取值始终在某个特定的范围之内,总可以将sigmoid原创 2022-06-21 17:27:02 · 4514 阅读 · 2 评论 -
self-attention自注意力机制的结构详解(1)
1、模型的输入:如果把输入看成一个向量,输出是数值或者类别。但是若输入是一系列的向量(序列),同时长度会改变,例如输入是一句英文,每个单词的长短不一,每个词汇对应一个向量,所以模型的输入是多个长短不一的向量集合,并且每个向量的大小都不一样。另外有语音信号(其中一段语音为一个向量)、图论(每个节点是一个向量)也能描述为一串向量。将单词表示为向量的方法,(1)可以利用one-hot encoding,向量的长度就是世界上所有词汇的数目,用不同位的1(其余位置为0)表示一个词汇,但是这种方式下每一个词之间没有关系原创 2022-06-02 23:59:21 · 10467 阅读 · 0 评论 -
什么是注意力机制及其应用(self attention)?
注意力机制是自深度学习快速发展后广泛应用于自然语言处理、统计学习、图像检测、语音识别等领域的核心技术,例如将注意力机制与RNN结合进行图像分类,将注意力机制运用在自然语言处理中提高翻译精度,注意力机制本质上说就是实现信息处理资源的高效分配,例如先关注场景中的一些重点,剩下的不重要的场景可能会被暂时性地忽略,注意力机制能够以高权重去聚焦重要信息,以低权重去忽略不相关的信息,并且还可以不断调整权重,使得在不同的情况下也可以选取重要的信息。其基本网络框架如图所示。注意力机制自提出后,影响了许多基于深度学习算法..原创 2022-06-01 22:49:43 · 15346 阅读 · 0 评论 -
Pytorch学习--回归损失函数总结
“损失函数”是机器学习优化中至关重要的一部分。机器学习中所有的算法都需要最大化或最小化一个函数,这个函数被称为“目标函数”。其中,我们一般把最小化的一类函数,称为“损失函数”。它能根据预测结果,衡量出模型预测能力的好坏。常见的损失函数例如L1、L2损失函数。除此之外,还有Huber损失、Log-Cosh损失、以及常用于计算预测区间的分位数损失。在实际应用中,选取损失函数会受到诸多因素的制约,比如是否有异常值、机器学习算法的选择、梯度下降的时间复杂度、求导的难易程度以及预测值的置信度等等。因此,不存在一种损失原创 2022-06-23 00:46:10 · 4182 阅读 · 1 评论 -
pytorch----深度学习中学习率的衰减策略
学习率是 神经网络 优化时的重要超参数。学习率α的取值非常关键,学习率越大则权重更新的越快。在梯度下降方法中,如果过大就不会收敛,如果过小则收敛速度太慢。学习率越大,输出误差对参数的影响就越大,参数更新的就越快,但同时受到异常数据的影响也就越大,很容易发散。一般来说,我们希望在训练初期学习率大一些,使得网络收敛迅速,在训练后期学习率小一些,使得网络在收敛到最优点附近时避免来回震荡,更好的收敛到最优解。 因此,比较简单直接的学习率调整可以通过学习率衰减(Learning Rate Decay)的方式来实现。可原创 2022-06-09 00:00:01 · 9549 阅读 · 0 评论 -
pycharm远程连接服务器的使用(自用)
本文以极链AI云为例。原创 2022-08-22 17:04:51 · 1352 阅读 · 0 评论 -
Python中 rstrip()、 lstrip()、 strip() 的用法和区别
目录:题目一:Python中 rstrip()、 lstrip()、 strip() 的用法和区别题目二:python中append()、expend()函数的用法和区别题目三:Python中zip()、zip(*zipped)、*zip()函数的用法和区别题目一:Python中 rstrip()、 lstrip()、 strip() 的用法和区别考点这三个函数都是去除头尾字符、空白符的函数strip: 用来去除头尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表原创 2022-05-15 16:20:10 · 3371 阅读 · 0 评论 -
SRGAN(SRResNet)介绍
监督式学习是指基于大量带有标签的训练集与测试集的机器学习过程,比如监督式图片分类器需要一系列图片和对应的标签(“猫”,“狗”…),而非监督式学习则不需要这么多额外的工作,它们可以自己从错误中进行学习,并降低未来出错的概率。在训练过程中,D会接收真数据和G产生的假数据,它的任务是判断图片是属于真数据的还是假数据的。生成器G的目标是绘制出非常接近的伪造图片来欺骗D,做法是选取训练数据潜在空间中的元素进行组合,并加入随机噪音,例如在这里可以选取一个猫的图片,然后给猫加上第三只眼睛,以此作为假数据。原创 2022-10-03 21:27:14 · 4217 阅读 · 0 评论 -
基于深度学习的高分辨率重建上采样算法总结
回到r,每个pixel有r2个channel,把它铺平,成为一个r x r的SR大像素,所以(r2C, H x W)就成了(C, r x r x H x W), 也就是(C, rH, rW)网络的输入是原始低分辨率图像,通过三个卷积层以后,得到的特征为r^2WH ,其中WH与输入图像大小相同,再将特征图像每个像素的 r^2个通道重新排列成一个 r*r 的区域,即将r^2WH特征经过重排得到rW*rH的输出,实现了图像r倍上采样。比如input的shape是(1, 64, 20, 30), r = 2,原创 2022-10-04 20:10:52 · 1537 阅读 · 0 评论 -
打乱划分自己的数据集,并加载到数据加载器中(2)
在数据集的划分上:既可以将训练用例和测试用例用四个不同的文件保存,分别是训练数据名和训练标签名,测试数据名和测试标签名,再根据文件中的名称,依次从全部数据中读取,完成划分。也可以将全部数据的名称保存在两个文件中,分别是全部数据名和全部标签名,按照一定的比例划分,依次读取训练集和测试集。这种方法用到的相关代码如下:import torchimport torchvisionimport torchvisionimport torchvision.transforms...原创 2022-05-18 22:44:02 · 0 阅读 · 0 评论 -
打乱划分自己的数据集,并加载到数据加载器中(1)
这里以MNIST数据集的训练样本为例,将其划分为两个新的数据集:详细代码见下一节:1、np.floor 是向下取整函数np.floor 返回不大于输入参数的最大整数。 即对于输入值x ,将返回最大的整数 i ,使得 i <= x。 除此之外,NumPy常见运算四舍五入、取整、条件选取np.around、np.floor、np.ceil、np.where的详细用法如下:【NumPy】 之常见运算四舍五入、取整、条件选取(np.around、np.floor、np.ceil、np.whe.原创 2022-05-18 22:43:03 · 605 阅读 · 0 评论 -
使用GPU进行深度学习环境的搭建
一、前言windows10 版本安装 CUDA ,首先需要下载两个安装包CUDA toolkit(toolkit就是指工具包) cuDNN注:cuDNN 是用于配置深度学习使用二、准备工作要使用GPU加速,首先就要去安装CUDA和cuDNN。 首先 要看一下你的电脑的显卡对应的是哪个版本的CUDA,千万不要下错了,不然运行不了的。 查看方法很多,网上都很容易搜得到,这里介绍其中一种: 在终端输入nvidia-smi就可以查看自己的显卡对应哪个版本。我电脑的是GTX 1650,对原创 2022-05-19 21:08:03 · 2907 阅读 · 4 评论 -
使用 PyTorch 进行深度学习-训练分类器
之前的内容已经学习了如何定义神经网络、计算损失和更新网络的权重。 现在我们可以完整的训练一个分类器。我们将按顺序执行以下步骤:使用加载和规范化 CIFAR10 训练和测试数据集 torchvision 定义卷积神经网络 定义损失函数 在训练数据上训练网络 在测试数据上测试网络1、获取数据通常,当我们必须处理图像、文本、音频或视频数据时, 可以使用将数据加载到 numpy 数组中的标准 python 包。 然后将此数组转换为 torch.*Tensor类型。对于图像,Pillow、O原创 2022-05-07 23:40:37 · 2294 阅读 · 2 评论 -
pytorch基础-打开指定路径的文件并加载数据
1、with open() as f 用法对文件进行读写操作,实例中的 rb 是以二进制格式打开一个文件用于只读,f 代表该路径下的文件,如果文件打开成功,调用 f.read() 方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示。最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。 f = open('/Users/michael/test.txt', 'r') f原创 2022-05-16 17:22:44 · 3020 阅读 · 0 评论 -
使用 PyTorch 进行深度学习-神经网络(部分)
神经网络可以用torch.nn包来构建。之前的内容已经了解了 autograd,nn 依赖于 autograd 来定义模型并区分它们。 nn.Module 包含层和返回输出的方法 forward(input)。例如,看看这个分类数字图像的网络:这是一个简单的前馈网络。 它接受输入,一个接一个地通过几个层,最后给出输出。神经网络的典型训练过程如下:定义具有一些可学习参数的神经网络(或权重) 迭代输入数据集 通过网络处理输入 计算损失(输出距离正确有多远) 将梯度传播回网络的参数 更新原创 2022-05-09 23:56:08 · 1349 阅读 · 0 评论 -
pytorch学习笔记-num_workers的设置
示例:from torch.utils.data import DataLoadertrain_loader = DataLoader(dataset=train_data, batch_size=batch, shuffle=True, num_worker=4)valid_loader = DataLoader(dataset=valid_data, batch_size=batch, num_worker=4)1、num_workers是加载数据(batch)的线程数目num_w原创 2022-05-17 16:36:26 · 15299 阅读 · 3 评论 -
使用PyTorch进行深度学习-TensorBoard 可视化模型、数据和训练
在之前的内容中, 已经展示了如何加载数据, 通过我们定义nn.Module的子类模型 , 在训练数据上训练该模型,并在测试数据上对其进行测试。 还打印出一些模型在训练过程中的统计数据以了解训练是否在进行中。 但是,PyTorch 与 TensorBoard可以做得更好,它是一种用于可视化神经网络训练运行结果的工具。 本次使用Fashion MNIST(使用 torchvision.datasets 导入 PyTorch )数据集演示了它的一些功能。读入数据并进行适当的转换(与之前的教程几乎相同)。 设原创 2022-05-10 23:31:22 · 2084 阅读 · 0 评论