自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

橙子的博客

当你在夜晚孤军奋战时漫天星光都因你而闪烁

  • 博客(86)
  • 收藏
  • 关注

原创 Pytorch图像处理篇:使用pytorch搭建ResNet并基于迁移学习训练

model.pyimport torch.nn as nnimport torch#首先定义34层残差结构class BasicBlock(nn.Module): expansion = 1 #对应主分支中卷积核的个数有没有发生变化 #定义初始化函数(输入特征矩阵的深度,输出特征矩阵的深度(主分支上卷积核的个数),不惧默认设置为1,下采样参数设置为None) def __init__(self, in_channel, out_channel, stride=1,..

2022-04-23 10:01:53 2462 1

原创 pytorch图像分类篇:搭建GoolgeLeNet模型的代码

model.pyimport torch.nn as nnimport torchimport torch.nn.functional as F#最后进行定义GoogeLeNet函数class GoogLeNet(nn.Module): #初始化函数(分类的类别个数,是否使用辅助分类器,是否对权重进行初始化) def __init__(self, num_classes=1000, aux_logits=True, init_weights=False): ..

2022-04-22 17:21:39 2858

原创 pytorch图像分类篇:搭建VGG网络

model.pyimport torch.nn as nnimport torch# official pretrain weightsmodel_urls = { 'vgg11': 'https://download.pytorch.org/models/vgg11-bbd30ac9.pth', 'vgg13': 'https://download.pytorch.org/models/vgg13-c768596a.pth', 'vgg16': 'https://..

2022-04-22 15:24:59 3233 2

原创 pytorch图像分类篇: 花分类数据集下载和AlexNet网络搭建训练

一、花分类数据集下载data_setdata_set该文件夹是用来存放训练数据的目录使用步骤如下:(1)在data_set文件夹下创建新文件夹"flower_data"(2)点击链接下载花分类数据集(3)解压数据集到flower_data文件夹下(4)执行"flower_data.py"脚本自动将数据集划分成训练集train和验证集val├── flower_data ├── flower_photos(解压的数据集文件夹,3670个样本) ...

2022-04-20 21:51:30 6403 6

原创 pytorch图像分类篇:pytorch官方demo实现一个分类器(LeNet)

一、说明model.py——定义LeNet网络模型 train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 predict.py——利用训练好的网络参数后,用自己找的图像进行分类测试二、代码实现1、model.pyimport torch.nn as nnimport torch.nn.functional as F#在pytorch中搭建模型#首先建立一个类,把类寄存于nn.Moudel中class LeNet(nn.M

2022-04-20 14:12:24 1482

原创 Pytorch——统计属性的方法

1、norm 求范数范数最为一个统计信息,是最常用的。如何简单的使用norm这个apia=torch.full([8],1) #表示使用full函数生成长度为8的数值全是1的tensorb=a.view(2,4) c=a.view(2,2,2)print(a) #输出[[1.,1.,1.,1.], [1.,1.,1.,1.]]print(c) #输出[[[1.,1.],[1.,1.]], [[1.,1.],[1.,1.]]

2022-04-13 15:28:42 197 1

原创 Pytorch——拼接与拆分

1、cat 拼接例子:两张成绩单的数据第一张成绩单是班级1~4的成绩单第二张成绩单是班级5~9的成绩单a=torch.rand(4,32,8) #表示四个班级的成绩单b=torch.rand(5,32,8) #表示五个班级的成绩单#进行合并torch.cat([a,b],dim=0).shape #第一个参数表示要合并社么数据,第二个参数表示要合并哪个维度上的数据;#输出结果torch.Size([9,32,8])注意:只有需要合并数据的维度的数值可以不一致,其他的数据

2022-04-13 10:41:45 2520

原创 Pytorch——关于Broadcast(自动扩展)

1、broadcasting广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。如果两个数组 a 和 b 形状相同,即满足a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。(1) 与expend函数是一样的,可以扩展维度,但是broadcasting是自动扩展。(2)扩展的时候不需要拷贝数据,可以省略数据。2、broadcast.

2022-04-13 09:54:57 511

原创 Pytorch——tensor维度变换

1、常用的api(1)View/reshape 可以将一个shape转变成任意一个shape(2)Squeeze/unsqueeze 挤压与增加维度(3)Transpose/t/permute (矩阵的传置) 单次的交换操作和多次的交换操作(4)Expand/repeat 维度的扩展 我们可以把维度小的变成高维度的2、view 和reshape这两个基本是一摸一样的,区别在于pytorch0.3中默认的是view函数;a=troch.rand(4,1,28,28) #使用ran

2022-04-12 11:27:44 6240 4

原创 Pytorch——如何创建一个tensor与索引和切片(二)

1、两种常见的随机初始化(1) rand函数rander函数就是随机的使用0和1的均值分布来初始化,也就是说它从零和一的空间中随机的均匀的sample出来,这样数据就回均匀的分布在0和1之间。torch.rand(3,3) #表示随机生成一个3X3的数值在0和1之间的均匀分布的矩阵a=torch.rand(3,3)torch.rand_like(a) #将a,shape读取出来再送给rand函数 (2)randint函数randint的参数表示它要指定一个极小值,一个最小值和一

2022-04-11 18:26:00 1516

原创 Pytorch——如何创建一个tensor与索引和切片(一)

创建Tensornumpy是一个非常常见的数据的一个载体,数据可以先从numpy中间先导进tensor来;1、从numpy引入 import from numpya=np.array([2,3.3])#从numpy中创建一个dim=1,长度为2的一个向量;print(torch.from_numpy(a))#使用torch.from_numpy()的函数将numpy作为参数导进来,数据维持不变#输出结果为tensor([2.0000,3.3000],dtype=torch.float(64

2022-04-11 10:55:48 1651

原创 Pytorch——pytorch的基本数据类型

1、python与pytorch的区别对pytorch来说怎么处理python中的string类型:pytorh没有控件来处理string类型,在pytorch中用数字编码来替代。第一,采用One-hot的形式来表示,[0,1,0,...]第二,采用Embedding的形式来表示,常用的编码器Word2vec和glove。2、pytorch的数据类型3、数据类型的判断a=torch.randn(2,3) #这是一个二维的tensor,随机初始化两行三列print(a.

2022-04-11 09:19:25 1767

原创 动手学深度学习——残差网络ResNet

1、 残差块串联一个层改变函数类,我们希望能扩大函数类;残差块加入快速通道来得到f(x)=x+g(x)的结构:2、ResNet块细节可以使用不同的残差块;高宽减半的ResNet块;后接多个高宽不变的ResNet;3、ResNet架构类似于VGG和GoogleNetde 总体架构,但是替换了ResNet块;4、总结残差块是的很深的网络更加容易训练,甚至可以训练到一千层;残差网络对随后的深层神经网络设计产生了深远影响,无论是卷积类网络还是全连接类网络。.

2022-03-10 10:34:45 2515

原创 动手学深度学习——批量归一化

1、批量归一化损失出现在最后,后面的层训练较快;数据在最底部,底部的层训练的慢;底部层一变化,所有都得跟着变;最后的那些层需要重新学习多次;导致收敛变慢;固定小批量里面的均差和方差:然后再做额外的调整(可学习的参数):2、批量归一化层可学习的参数为γ和β;作用在全连接层和卷积层输出上,激活函数前;全连接层和卷积层输入上;对全连接层,作用在特征维;对于卷积层,作用在通道维上。3、批量归一化在做什么最初是想用它来减少内部变量转移;后续指出它可能就是通过在每个小

2022-03-09 20:58:01 2060

原创 动手学深度学习——含并行连结的网络GoogLenet

1、网络结构2、Inception块四个路径从不同层面抽取信息,然后再输出通道维合并。4条 线路都使⽤了合适的填充来使输⼊与输出的⾼和宽⼀致。第一个Inception块,显示通道数,降低通道数来控制模型复杂度;每条路上通道数可能不同。跟3x3或者5x5卷积层比,Inception块有更少的参数个数和计算复杂度。3、GoogLenet5段,9个Inception块(1)段1和2更小的宽口,更多的通道。(2)段3通道数分配不同;输出通道增加。..

2022-03-09 16:13:45 921

原创 动手学深度学习——网络中的网络NIN

2022-03-09 09:45:12 932

原创 动手学深度学习———使用块的网络VGG

1、VGG块VGG块的组成规律是:连续使用数个相同的填充为1、窗口形状为2×2的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。我们使用vgg_block函数来实现这个基础的VGG块,它可以指定卷积层的数量和输入输出通道数。2、VGG架构多个VGG块后接全连接层;不同次数的重复块得到不同的架构VGG-16、VGG-19,...3、VGG网络与AlexNet和LeNet一样,VGG网络由卷积层模块后接全连接层模块构成。卷积层模块串联数个vgg_block,其超参数由变量co

2022-03-06 21:15:58 544

原创 动手学习深度学习——深度卷积神经网络Alexnet

1、AlexNet定义 2012年,AlexNet横空出世。这个模型的名字来源于论⽂第⼀作者的姓名Alex Krizhevsky [1]。 AlexNet使⽤了8层卷积神经⽹络,并以很⼤的优势赢得了ImageNet 2012图像识别挑战赛。它⾸次证 明了学习到的特征可以超越⼿⼯设计的特征,从⽽⼀举打破计算机视觉研究的前状。2、AlexNet与LeNet的区别第⼀,与相对较⼩的LeNet相⽐,AlexNet包含8层变换,其中有5层卷积和2层全连接隐藏层,以及1个 全连接输出层。...

2022-03-06 16:41:34 582

原创 动手学深度学习——经典卷积神经LeNet

1、概念及结构LeNet由Yann Lecun 创建,并将该网络用于邮局的邮政的邮政编码识别,有着良好的学习和识别能力。LeNet又称LeNet-5,具有一个输入层,两个卷积层,两个池化层,3个全连接层(其中最后一个全连接层为输出层)。LeNet网络结构图如下:LeNet-5共有7层(不包含输入),每层都包含可训练参数。输入图像大小为32*32,比MNIST数据集的图片要大一些,这么做的原因是希望潜在的明显特征如笔画断点或角能够出现在最高层特征检测子感受野(receptive field)的

2022-03-06 09:42:57 480

原创 动手学深度学习——池化层

1、二维最大池化返回滑动窗口中的最大值2、填充、步幅、和多个通道池化层与卷积层类似,都具有填充和步幅;没有可学习的参数;在每个输入通道应用池化层以获得相应的输出通道;输出通道数=输入通道数;3、平均池化层最大池化层:每个窗口中最强的模式信号平均池化层:将最大池化层中的最大操作替换为平均;4、总结池化层返回窗口中最大或平均值;缓解卷积层对位置的敏感性;同样有窗口大小、填充和步幅作为超参数。5、代码实现"""二维最大池化层和平均池化层""

2022-03-05 16:09:22 1435

原创 深度学习——VGG16模型详解

1、网络结构VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。介绍结构图:conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为

2022-03-02 09:54:08 90703 15

原创 动手学深度学习——卷积层里的多个输入和输出通道

1、多个输入通道彩色图像可能有RGB三个通道,转化为灰度会丢失信息。每个通道都有一个卷积核,结果是所有通道卷积结果的和。用公式表示:2、多个输出通道无论有多少个输入通道,到目前为止我们只用到单输出通道;我们可以有多个三维卷积核,每个核生成一个输出通道。每个输出通道可以识别特定模式;输入通道核识别并组合输入中的模式。3、1x1的卷积层kh=kw=1是一个受欢迎的选择,他不识别空间模式,只是融合通道;1x1的卷积层也可以说是全连接层;卷积层通常⽤来调整⽹络层之

2022-03-01 17:18:01 3764

原创 特征融合的分类和方法

1、特征融合的定义特征融合方法是模式识别领域的一种重要的方法,计算机视觉领域的图像识别问题作为一种特殊的模式分类问题,仍然存在很多的挑战,特征融合方法能够综合利用多种图像特征,实现多特征的优势互补,获得更加鲁棒和准确性的识别结果。2、特征融合的分类按照融合和预测的先后顺序,分类为早融合和晚融合(Early fusion and Late fusion)早融合(Early fusion):就是在特征上进行融合,进行不同特征的连接,输入到一个模型中进行训练。(先融合多层的特征,然后在融合后的特征

2022-03-01 16:19:22 36965 3

原创 动手学深度学习——卷积层里的填充和步幅

1、填充填充(padding)是指在输⼊⾼和宽的两侧填充元素(通常是0元素)。给定(32x32)输入图像;应用5x5大小的卷积核,第一层得到输出大小28x28,第七层得到输出大小4x4;更大的卷积核可以更快的减少输出大小,形状从减少到。也就是行数和列数会较少。注:当想用一个大的卷积核又不想减少输出怎么办?就是进行填充,在输入的周围添加额外的行或者列。在很多情况下,我们会设置和来使输⼊和输出具有相同的⾼和宽。这样会⽅ 便在构造⽹络时推测每个层的输出形状。假设这.

2022-02-27 21:35:35 3963

原创 动手学深度学习——卷积层

从全连接到卷积1、简单例子:分类猫和狗的图片使用一个还不错的相机采集图片(12M像素)RGB图片有36M元素使用100大小的单隐藏层MLP,模型有3.6B元素,远多于世界上所有猫和狗总数(900M狗,600M猫)2、重新考察全连接层将输入和输出变形为矩阵(宽度,高度);将权重变形为4-D张量(h,w)到(h‘,w’)V是W的重新索引3、二维交叉相关4、二维卷积层5、 交叉相关和卷积由于对称性,在实际应用中没有任何区别。6、一维和三维交叉..

2022-02-27 20:36:54 5994 3

原创 动手学深度学习——读取和存储

"""读写TENSOR"""#我们可以直接使用save函数和load函数分别存储和读取Tensor。#save函数使用Python的pickle实用程序将对象进行序列化,然后将序列化对象保存在disk,使用save可以保存各种对象,包括模型、张量和字典等。#load函数使用pickle unpickle工具将pickle的对象文件反序列化为内存。import torchfrom pyexpat import modelfrom torch import nn#创建tensor变量x,并将.

2022-01-26 19:35:54 1878

原创 动手学深度学习——自定义层

"""不含模型参数的自定义层"""#如何定义一个不含模型的自定义层:#下面的CenteredLayer类通过继承Module类自定义了一个将输入减掉均值后输出的层,并将层的计算定义在了forward函数里。#这个层里不含模型参数import torchfrom torch import nnclass CenteredLayer(nn.Module): def __init__(self,**kwargs): super(CenteredLayer,self).__.

2022-01-26 19:21:41 1865

原创 动手学深度学习——模型参数的访问、初始化和共享

这一节我们从nn 中导⼊了 init 模块,它包含了多种模型初始化⽅法。import torchfrom torch import nnfrom torch.nn import initnet=nn.Sequential(nn.Linear(4,3),nn.ReLU(),nn.Linear(3,1))#pytorch已进行默认初始化print(net)X=torch.rand(2,4)Y=net(X).sum()输出:"""访问模型参数"""#通过 Module 类

2022-01-26 19:17:31 1909

转载 如何理解深度学习中的端到端(end---to---end)的方式

端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征,这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取图像的一些关键特征,这实际就是就一个降维的过程。相对于深度学习,传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词、词性标注、句法分析、语义分析等多个独立步骤,每个步骤是一个独立的任务,其结果的好坏会影响到

2022-01-23 17:27:35 3579

原创 动手学深度学习——继承 MODULE 类来构造模型

Module 类是 nn 模块⾥提供的⼀个模型构造类,是所有神经⽹络模块的基类.import torchfrom torch import nn #使用nn这个Modulefrom torch.nn import functional as F"""首先,回顾一下多层感知机"""net = nn.Sequential(nn.Linear(784,256),nn.ReLU(),nn.Linear(256,10))#Sequential类是一个特殊的ModuleX=torch.rand(2.

2022-01-18 23:26:12 986

原创 动手学深度学习——丢弃法及其代码实现

一、丢弃法(dropout)动机:一个好的模型需要对输入数据的扰动鲁棒使用有噪音的数据等价于Tikhonov正则丢弃法:在层之间加入噪音。使用丢弃法,通常将丢弃法作用在隐藏去拿连接层的输出上。丢弃的概率是控制模型复杂度的超参数。二、丢弃法从零开始实现from matplotlib import pyplot as pltimport torchimport torch.nn as nnimport numpy as npimport syssys.path.appen

2021-12-01 21:51:10 1172

原创 动手学深度学习——权重衰退的简洁实现代码

import torchimport torch.nn as nnimport numpy as npimport syssys.path.append("..")import d2lzh_pytorch as d2limport sysfrom matplotlib import pyplot as pltn_train, n_test, num_inputs = 20, 100, 200#训练数据集越小,越容易过拟合。训练数据集为20,测试数据集为100,特征的纬度选择200.#.

2021-12-01 11:19:50 881

原创 动手学深度学习——权重衰退及代码实现

一、权重衰退1、权重衰退:是常用来处理过拟合的一种方法。2、使用均方范数作为硬性限制通过限制参数值的选择范围来控制模型容量通常不限制偏移b(限制不限制都差不多)。 小的意味着更强的正则项。3、使用均方范数作为柔性限制对于每个,都可以找到λ使得之前的目标函数等价于下面:可以通过拉格朗日乘子来证明。超参数λ控制了正则项的重要程度:4、参数更新法则每一次引入λ就会把权重放小,所以叫权重衰退。5、总结权重衰退通过L2正则项使得模型参数不会过大,从而控制

2021-12-01 11:17:05 1628

原创 动手学深度学习18——模型选择+过拟合和欠拟合及代码实现

一、模型选择1、怎么选择超参数例:预测谁会偿还贷款银行雇你来调查谁会偿还贷款,你得到了100个申请人的信息,其中五个人三年内违约了(换不清贷款),你发现所有的5个人在面试的时候都穿了蓝色衬衫,你的模型也发现了这个强信号,这会有什么问题?2、训练误差和泛化误差训练误差:模型在训练数据上的误差。 泛化误差:模型在新数据上的误差。例子:根据模考成绩来预测未来考试分数。在过去的考试中表现很好(训练误差)不代表未来考试一定会好(泛化误差)3、验证数据集和测试数据集验证数据集:一..

2021-11-30 18:35:16 1200

原创 动手学深度学习——多层感知机从零开始实现及简洁实现

多层感知机从零开始实现#首先需要导入需要的包import torchimport numpy as npimport syssys.path.append("..")import d2lzh_pytorch as d2l"""1、获取数据使用FashionMNIST数据集,使用多层感知机对图像开始分类"""batch_size=256 #批量大小设置为256,也就是每次读取256张图片train_iter,test_iter =d2l.load_data_fashion_mni

2021-11-30 12:13:26 1011

原创 动手学深度学习——多层感知机的激活函数及代码实现

感知机给定输入x(向量),权重w(向量),和偏移b(标量),感知机输出:感知机不能拟合XOR函数,他只能产生线性分割面。感知机是一个二分类的模型,是最早的AI模型之一。感知机的求解算法等价于使用批量大小为1 的梯度下降。多层感知机1、学习XOR2、单隐藏层-单分类为什么需要非线性的激活函数?如果不加激活函数,就是n个全连接层叠加在一起,输出还是一个最简单的线性模型。3、激活函数3.1 sigmoid 函数他就是说对于x来讲,将他投影到(0,1)..

2021-11-30 11:08:30 1799

原创 动手学深度学习——softmax回归的简洁实现

import torchfrom self import selffrom torch import nnfrom torch.nn import initimport numpy as npimport syssys.path.append("..")import d2lzh_pytorch as d2l#1、获取和获取数据batch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size).

2021-11-24 21:29:31 700

原创 动手学深度学习——图像分类数据集Fashion-MNIST

Fashion-MNIST是⼀个10类服饰分类数据集。torchvision包:它是服务于PyTorch深度学习框架的,主要⽤来构建计算机视觉模型。 torchvision主要由以下⼏部分构成: torchvision.datasets : ⼀些加载数据的函数及常⽤的数据集接⼝; torchvision.models : 包含常⽤的模型结构(含预训练模型),例如AlexNet、VGG、 ResNet等; torchvision.transforms : 常⽤的图⽚变换,例如裁剪、...

2021-11-23 20:21:08 2776 1

原创 动手学深度学习——softmax回归简单介绍

1、首先我们解释一下回归和分类的区别:回归估计一个连续值,比如说预测房子的价格;分类预测一个离散类别,比如说我预测一个图片里面是猫还是狗。例1:MNIST (手写数字识别)10类例2:ImageNet(自然物体分类)1000类2、Kaggle上的典型的分类问题例1、将人类蛋白质显微镜图片分成28类例2、将恶意软件分成9个类别例3、将恶意的Wikipedia评论分成7类3、从回归到多类分类回归:单连续数据输出;自然区间R;做损失函数的时候跟真实值的区别作为损..

2021-11-23 11:38:20 1145 1

原创 动手学深度学习——线性回归的简洁实现

1、导入的数据包import numpy as npimport torchimport torch.utils.data as Data #PyTorch提供了 data 包来读取数据。由于 data 常⽤作变量名,我们将导⼊的 data 模块⽤ Data 代替。from torch import nn, optimfrom torch.nn import init2、生成数据集,其中features是训练数据特征,labels是标签。num_inputs=2 #输入的个数nu

2021-11-22 12:23:14 788

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除