自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 leetcode未整理合集

78class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ length=len(nums) if length==0: return [[]] n=nums.pop(-1) ret=self.sub

2021-09-29 16:07:25 126

原创 python list相关知识

一、创建1.1 深拷贝及浅拷贝问题1.1.1 非拷贝(直接赋值)如果使用=直接赋值,那么此时两个列表共享同一块内存空间,即修改其中任何一个列表都会影响另外一个。1.1.2 浅拷贝copy()copy()方法仅对list的第一层实现了深拷贝。因为嵌套的List保存的是地址,复制过去的时候是把地址复制过去了,嵌套的List在内存中指向的还是同一个,具体例子如下:old=[1,[1,2,3],3]new=old.copy()print('before')print('old:',old)

2021-09-29 12:22:34 265

原创 神经网络卷积层以及池化层介绍

一、二维卷积层池化层的提出是为了缓解卷积层对位置的过度敏感性。一、二维最大池化层和平均池化层同卷积层⼀样,池化层每次对输⼊数据的⼀个固定形状窗⼝(⼜称池化窗⼝)中的元素计算输出。不同于卷积层⾥计算输⼊和核的互相关性,池化层直接计算池化窗⼝内元素的最⼤值或者平均值。该运算也分别叫做最⼤池化或平均池化。在⼆维最⼤池化中,池化窗⼝从输⼊数组的最左上⽅开始,按从左往右、从上往下的顺序,依次在输⼊数组上滑动。当池化窗⼝滑动到某⼀位置时,窗⼝中的输⼊⼦数组的最⼤值即输出数组中相应位置的元素。下图展示了池化窗口形

2021-09-29 09:04:59 6989

原创 Pytorch数据的读取与存储

在实际中,我们有时需要把训练好的模型部署到很多不同的设备。这种情况下我们需要将内存训练好的模型参数存储在硬盘上供后续读取使用。一、读写Tensor我们可以直接使用save函数和load函数分别存储和读取Tensor。save使用Python的pickle模块将对象进行序列化,然后将序列化的对象保存到disk,使用save可以保存各种对象。包括模型、张量和字典等。而load使用pickle unpickle工具将pickle的对象文件反序列化为内存。下面的例子创建了Tensor变量x,并将其存在文件名同

2021-09-28 20:27:14 1846

原创 Pytorch模型构造方法

一、继承Module类来构造模型Module类是nn模块里提供的一个模型构造类,是所有神经网络模块的基类,如下所示,继承这个类需要重载Module类中的__init__函数和forward函数,它们分别用于创建模型参数和定义前向计算(正向传播)。继承时无需定义反向传播函数,因为系统将通过自动求梯度而自动生成反向传播所需的backward函数。...

2021-09-28 16:54:26 358

原创 Pytorch模型参数的访问、初始化和共享

首先定义一个含单隐藏层的多层感知机,使用默认方法初始化它的参数,并做一次前向运算。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()输出:Sequential( (0): Linear

2021-09-28 10:55:53 610

原创 Pytorch中Tensor和numpy数组的互相转化

Pytorch中Tensor和Numpy数组的相互转化分为两种,第一种转化前后的对象共享相同的内存区域(即修改其中另外一个也会改变);第二种是二者并不共享内存区域。首先介绍第一种共享内存区域的转化方式,涉及到numpy()和from_numpy()两个函数。使用numpy()函数可以将Tensor转化为Numpy数组:a=torch.ones(5)b=a.numpy()print(type(a))print(type(b))输出:<class 'torch.Tensor'>&

2021-09-28 09:07:56 2785

原创 Pytorch中DataLoader相关操作

在实践中,数据读取经常是训练的性能瓶颈,特别当模型简单或者计算硬件性能较高时。Pytorch的DataLoader中一个很方便的功能是允许使用多进程来加速数据读取。具体使用时设定其中的num_workers参数来指定读取数据的进程数。...

2021-09-27 23:36:17 181

原创 pytorch和GPU有关操作(CUDA)

使用GPU前,我们首先需要查看GPU信息,这可以通过如下命令实现:watch nvidia-smi输出如下:可以看到总共有两块3090显卡。一、设定计算设备默认情况下Pytorch将数据创建在内存,然后利用CPU进行计算,所以我们我们需要手动设定GPU信息。接下来介绍几个相关指令查看GPU是否可用:torch.cuda.is_available()查看GPU数量:torch.cuda.device_count()查看当前GPU索引号(从0开始):torch.cuda.current_de

2021-09-27 10:40:24 1807

原创 一、实数集与函数

三、函数概念一、函数的定义关于函数的定义,做如下几点声明:常用y=f(x),x∈Dy=f(x),x\in Dy=f(x),x∈D表示一个函数表示函数的主要方法是解析法(公式法),即用数学运算式子来表示函数。这时函数的定义域常取使该运算式子有意义的自变量值的全体,通常称为存在域。...

2021-09-26 10:38:27 118

原创 1.1 矩阵与线性方程组-矩阵的基本运算

一、矩阵的基本运算1.1 矩阵与向量一个n×nn\times nn×n正方矩阵AAA的主对角线是指从左上角到右下角沿i=j,j=1,2,…,ni=j,j=1,2,\dots,ni=j,j=1,2,…,n相连接的线段。位于主对角线上的元素称为AAA的对角元素。矩阵AAA从右上角到左下角相连接的线段称为矩阵AAA的交叉对角线(也称次对角线)。主对角线以外元素全部为零的n×nn\times nn×n矩阵称为对角矩阵,记作:D=diag(d11,d22,…,dnn)(1.1.8)D=diag(d_{11}

2021-09-24 15:37:14 850

原创 四、矩阵的变换与分解

一、Householder变换许多时候我们希望将矩阵变换为上三角矩阵或下三角矩阵。以4×44\times44×4矩阵为例,希望变换结果为:一般情况下,要求旋转矩阵PPP满足条件:PJPH=J(4.1.1)PJP^H=J\quad\quad\quad\quad\quad(4.1.1)PJPH=J(4.1.1)其中:或者为符号矩阵。1.1 Householder变换与Householder矩阵/待补充 222...

2021-09-24 15:24:32 441

原创 八、特征分析

一、特征值问题与特征方程Aμ=λμ,μ≠0(8.1.1)A\mu=\lambda\mu,\quad\quad \mu\ne0\quad\quad\quad\quad(8.1.1)Aμ=λμ,μ​=0(8.1.1)T(x)=λx(8.1.2)T(x)=\lambda x\quad\quad\quad\quad(8.1.2)T(x)=λx(8.1.2)

2021-09-24 15:17:58 1019

原创 五、梯度分析与最优化

一、梯度与无约束最优化无约束最优化问题的数学描述:min⁡x∈Rf(x)\min\limits_{x\in\mathbb{R}}f(x)x∈Rmin​f(x)1.1 目标函数的极小点如果函数f(x)f(x)f(x)具有连续的二阶导,那么在xxx的一个很小的邻域Δx\Delta xΔx内,就可以用泰勒展开:f(x+Δx)=f(x)+f′(x)Δx+12f′′(x)(Δx)2+…f(x+\Delta x)=f(x)+f'(x)\Delta x+\frac{1}{2}f''(x)(\Delta x)^2

2021-09-24 15:12:57 750

原创 六、无约束优化算法

本章考虑如下无约束优化问题:min⁡x∈Rnf(x)(6.0.1)\min\limits_{x\in\mathbb{R}^n}f(x)\quad\quad(6.0.1)x∈Rnmin​f(x)(6.0.1)其中f(x)f(x)f(x)是Rn→R\mathbb{R}^n\to\mathbb{R}Rn→R的函数。一、线搜索方法数学表述为:给定当前迭代点xkx^kxk,首先通过某种算法选取向量dkd^kdk,之后确定正数αk\alpha^kαk,则下一步的迭代点可写作:xk+1=xk+αkdk(6.1.

2021-09-22 21:25:23 1683

原创 三、解线性方程组的迭代法

一、概述迭代法的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则。1.1 迭代法的一般形式对线性方程组:Ax=b(3−1)Ax=b\quad(3-1)Ax=b(3−1)其中A=(aij)A=(a_{ij})A=(aij​)为n×nn\times nn×n阶非奇异矩阵,b=(b1,…,bn)Tb=(b_1,\dots,b_n)^Tb=(b1​,…,bn​)T。构造其形如:x=Mx+g(3−2)x=Mx+g\quad(3-2)x=Mx+g(3−2)的同解方程组,其中MM

2021-09-22 12:19:20 1144

原创 优化数学基础

一、线性代数1.1 矩阵内积与迹类似于向量的内积,我们可以定义矩阵的内积。具体地,对于两个m×nm\times nm×n的矩阵A,BA,BA,B,其内积定义为:⟨A,B⟩=∑i,jaijbij\langle A,B\rangle=\sum\limits_{i,j}a_{ij}b_{ij}⟨A,B⟩=i,j∑​aij​bij​从定义可以看出⟨A,B⟩=⟨B,A⟩\langle A,B\rangle=\langle B,A\rangle⟨A,B⟩=⟨B,A⟩。对于方阵A∈Rm×mA\in\mathbb{

2021-09-21 10:30:31 76

原创 五、最优性理论

一、最优化问题解的存在性考虑优化问题(5.1.1):min⁡x∈Rnf(x)s.t.x∈X(5.1.1)\min\limits_{x\in\mathbb{R}^n}\quad f(x)\\s.t.\quad x\in\mathcal{X}\quad\quad(5.1.1)x∈Rnmin​f(x)s.t.x∈X(5.1.1)其中x∈Xx\in\mathcal{X}x∈X为可行域,对于问题(5.1.1),首先要考虑的是最优解的存在性,然后考虑如何求出其最优解。数学分析中Weierstrass定理说明,定义

2021-09-19 18:52:35 2583

原创 一、误差的基本概念

二、误差的基本概念2.1 绝对误差与相对误差设x∗x^*x∗为准确值xxx的一个近似值,称e(x∗)=x−x∗e(x^*)=x-x^*e(x∗)=x−x∗为近似值x∗x^*x∗的绝对误差,简称误差。

2021-09-18 21:00:38 206

原创 python切片操作

一、python的索引方式以list对象[0,1,2,3,4,5,6,7,8,9]为例:可以看到,正索引从0开始,负索引从-1开始。二、python切片操作方式一个完整的切片表达式包含两个:,用于分隔三个参数start_index, end_index, step。当只有一个:时,默认第三个参数step=1;当一个:也没有时,start_index=end_index,表示切取start_index指定的那个元素。基本表达式:object[start_index:end_index:step]

2021-09-15 15:14:37 4902 1

原创 matplotlib.pyplot中API介绍

imshow函数原型:matplotlib.pyplot.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, *, filternorm=True, filterrad=4.0, resample=None, url=None, data=None, **kwargs)函数简介

2021-09-12 10:43:04 407

原创 六、无约束优化算法

四、牛顿类算法4.1 经典牛顿法对二次可微函数f(x)f(x)f(x),考虑f(x)f(x)f(x)在迭代点xkx^kxk处的二阶泰勒展开:f(xk+dk)=f(xk)+∇f(xk)Tdk+12(dk)T∇2f(xk)dk+o(∥dk∥2)f(x^k+d^k)=f(x^k)+\nabla f(x^k)^Td^k+\frac{1}{2}(d^k)^T\nabla^2f(x^k)d^k+o(\Vert d^k\Vert^2)f(xk+dk)=f(xk)+∇f(xk)Tdk+21​(dk)T∇2f(xk)d

2021-09-09 09:59:05 136

原创 二 基础知识

一、范数1.1 向量范数定义2.1(范数)称一个从向量空间Rn\mathbb{R}^nRn到实数域R\mathbb{R}R的非负函数||⋅\cdot⋅||为范数,如果它满足:正定性:对于所有的v∈Rv\in\mathbb{R}v∈R,有∥v∥≥0\Vert v\Vert\ge 0∥v∥≥0,且∥v∥=0\Vert v\Vert=0∥v∥=0当且仅当v=0v=0v=0齐次性:对于所有的v∈Rv\in\mathbb{R}v∈R和α∈R\alpha\in\mathbb{R}α∈R,有∥αv∥=∣α∣∥

2021-09-09 08:55:04 928

原创 动手学PyTorch知识点汇总

2.2.5 Tensor和numpy相互转换我们很容易用numpy()和from_numpy()将Tensor和Numpy中的数组相互转化。但是需要注意的一点是:这两个函数所产生的Tensor和Numpy中的数组共享相同的内存(所以他们之间的转换很快),改变其中一个时另外一个也会改变。还有一个常用的将Numpy中的array转换成Tensor的方法就是torch.tensor()。需要注意的是,此方法总是会进行数据拷贝(就会消耗更多的时间和空间),所以返回的Tensor和原来的数据不再共享内存。num

2021-09-08 10:17:33 778

原创 导数和微分

一、导数的概念1.1 导数的定义定义一:设函数y=f(x)y=f(x)y=f(x)在点x0x_0x0​的某邻域内有定义,若极限lim⁡x→x0f(x)−f(x0)x−x0\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}x→x0​lim​x−x0​f(x)−f(x0​)​ (3)存在,则称函数fff在点x0x_0x0​处可导,并称该极限为函数fff在点x0x_0x0​处的导数,记作f′(x0)f'(x_0)f′(x0​)令x=x0+Δx,Δy=f(x0

2021-09-07 16:33:07 187

原创 函数连续性

一、连续性概念1.1 函数在一点的连续性定义1:设函数fff在某U(x0)U(x_0)U(x0​)内有定义。若:lim⁡x→x0→f(x)=f(x0)\lim\limits_{x\to x_0}\to f(x)=f(x_0)x→x0​lim​→f(x)=f(x0​)则称fff在点x0x_0x0​连续。为引入函数y=f(x)y=f(x)y=f(x)在点x0x_0x0​连续的另一种表述,记...

2021-09-07 15:39:07 171

原创 函数的极限

一、函数极限概念1.1 x趋于∞\infty∞时函数的极限定义1: 设fff为定义在[a,+∞)[a,+\infty)[a,+∞)上的函数,AAA为定数。若对任给定的ϵ>0\epsilon>0ϵ>0,存在正数M(≥a)M(\ge a)M(≥a),使得当x>Mx>Mx>M时有:∣f(x)−A∣<ϵ|f(x)-A|<\epsilon∣f(x)−A∣<ϵ则称函数fff当xxx趋于+∞+\infty+∞时以AAA为极限,记作:lim⁡x→∞f(x)=A

2021-09-06 10:45:39 504

空空如也

空空如也

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

TA关注的人

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