pyTorch深度学习框架
文章平均质量分 97
动手学深度学习
一颗苹果OAOA
华科研一 / 深度学习 / 自营公众号【OAOA】
展开
-
【深度学习】各种各样的卷积形式
文章目录1、2D卷积2、3D卷积3、1×1卷积4、转置卷积(反卷积)5、Dilated Convolution (空洞卷积或扩张卷积)6、空间可分离卷积(没见用过)7、分组卷积8、深度可分离卷积9、可变形卷积10 对齐卷积 Alignment Convolution开始之前首先学习一个单词热热身:sibling 英[ˈsɪblɪŋ]n. 兄; 弟; 姐; 妹;1、2D卷积 把普通的卷积过程看作是在输入层中滑动一个三维filter。其中,输入层和filter具有相同的通道数。三维fil原创 2021-01-28 23:41:16 · 1548 阅读 · 0 评论 -
UserWarning: This overload of nonzero is deprecated: nonzero()
pytorch中的nonzero()函数报错描述UserWarning: This overload of nonzero is deprecated:nonzero()Consider using one of the following signatures instead:nonzero(*, bool as_tuple) (Triggered internally at …\torch\csrc\utils\python_arg_parser.cpp:766.)ids = (ovr &原创 2020-08-12 16:41:28 · 6483 阅读 · 0 评论 -
Pytorch入门:Mask R-CNN图像实例分割迁移学习(PyTorch官方教程)
The mode of an image defines the type and depth of a pixel in the image.一张图片的模式定义了图片的类型和像素深度,on. The current release supports the following standard modes:1 (1-bit pixels, black and white, stored with one pixel per byte)L (8-bit pixels, black and white原创 2020-08-08 10:08:32 · 7221 阅读 · 10 评论 -
Dog Breed Identification——Kaggle比赛微调GoogleNet网络(重点学习图片标签预处理及保存.csv文件)
Contents一、预处理官网下载的数据集(重点理解)1 建立文件夹函数 os.makedirs(path)2 os.listdir() 返回文件夹包含的文件或文件夹的名字的列表3 random.shuffle(train_files)4 file.split('.')[0]5 shutil.copy二、模型使用微调FineTuning的GoogleNetKaggle中的Dog Breed Identification,从官网上的“data”下载数据及后得到一个名为dog-breed-identifica原创 2020-07-26 20:10:58 · 1482 阅读 · 0 评论 -
CIFAR10图像分类ResNet模型实战(pytorch)
CIFAR10图像分类ResNet模型实战(pytorch)1 ResNet18网络实现及略微改进2 学习过程中的部分问题总结:2.1 为什么nn.ReLU() 设置 inplace=True?2.2 nn.Sequential(*layers)加了一个\*2.3 net.train()/ net.eval()2.4 用到的argsparse模块2.5创建记录数据的txt文件2.6 sum_loss 、 predicted 、total 、correct (重点理解)2.7 __init__中使用nn.Re原创 2020-07-25 20:09:38 · 4542 阅读 · 2 评论 -
Momentum、Adagrad、RMSprop、Adadelta、Adam【详细公式总结对比、pytorch实现】
先放一张公式汇总图:Contents1 Momentum动量优化算法1.1 梯度下降的问题1.2 动量法1.3 动量法的简洁实现2 ADAGRA算法2.1 算法简介2.2 从零开始实现2.3ADAGRAD简洁实现3 RMSprop算法3.1 算法简介3.2 从零开始实现3.3 RMSprop简洁实现4 AdaDelta优化算法4.1 算法简介4.2 从零开始实现4.3 AdaDelta的简洁实现5 ADAM优化算法5.1 算法简介5.2 从零开始实现5.3 Adam简洁实现1 Momentum动量优化原创 2020-07-22 18:39:35 · 970 阅读 · 1 评论 -
【深度学习】梯度下降、随机梯度下降、小批量随机梯度下降(pyTorch)
Contents1 梯度下降和随机梯度下降1.1 一维梯度下降1.2 学习率1.3 多维梯度下降1.4 随机梯度下降2 小批量随机梯度下降2.1 读取数据2.2 从零开始实现2.4 小批量随机梯度下降简洁实现1 梯度下降和随机梯度下降1.1 一维梯度下降%matplotlib inlineimport numpy as npimport torchimport mathimport syssys.path.append('..')import d2lzh_pytorch as d2ld原创 2020-07-22 16:49:59 · 842 阅读 · 4 评论 -
DenseNet稠密连接网络(pyTorch)
Contents1 Introduction2 稠密块3 过渡层4 DenseNet模型5 获取数据并训练1 Introduction与ResNet的主要区别在于,DenseNet里模块B的输出不是像ResNet那样和模块A的输出相加,而是在通道维上连结。这样模块A的输出可以直接传入模块B后面的层。在这个设计里,模块A直接跟模块B后面的所有层连接在了一起。这也是它被称为“稠密连接”的原因。如果用公式表示的话,传统的网络在 [公式] 层的输出为:而对于ResNet,增加了来自上一层输入的identit原创 2020-07-19 17:42:59 · 1673 阅读 · 0 评论 -
ResNet残差网络(pyTorch)
Contents1 Intorduction2 残差块3 ResNet模型4 获取数据和训练模型1 IntorductionResNet在2015年的ImageNet图像识别挑战赛夺魁。由于存在梯度消失和梯度爆炸问题,深度很深的神经网络是很难训练的。解决方法之一是人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系,即跳跃连接(skip connection)。用它可以构建能够训练深度网络的ResNets,这种神经网络被称为Residual Networks(ResNets)。原创 2020-07-19 17:28:41 · 986 阅读 · 0 评论 -
批量归一化【附详细解释及代码】
Contents1 Intorduction2 批量归一化层2.1 对全连接层做批量归一化2.2 对卷积层层做批量归一化2.3 预测时的批量归一化3 从零开始实现批量归一化4 使用pyTorch的nn模块实现批量归一化1 Intorduction批量归一化(batch normalization)层,它能让较深的神经网络的训练变得更加容易。通常来说,数据标准化预处理对于浅层模型就足够有效了。随着模型训练的进行,当每层中参数更新时,靠近输出层的输出较难出现剧烈变化。但对深层神经网络来说,即使输入数据已做原创 2020-07-18 17:22:57 · 3027 阅读 · 0 评论 -
【深度学习】GOOGLENET(含并行连结的网络)(pyTorch)
Contents1 Introduction2 Inception块3 GOOGLENET模型4 获取数据和训练模型1 Introduction在2014年的ImageNet图像识别挑战赛中,一个名叫GoogLeNet的网络结构大放异彩。它虽然在名字上向LeNet致敬,但在网络结构上已经很难看到LeNet的影子。GoogLeNet吸收了NiN中网络串联网络的思想,并在此基础上做了很大改进。2 Inception块GoogLeNet中的基础卷积块叫作Inception块,得名于同名电影《盗梦空间》(原创 2020-07-18 17:16:23 · 250 阅读 · 0 评论 -
【深度学习】NIN网络中的网络(pyTorch)
Contents1 Introduction2 NIN块3 NIN模型4 获取数据和训练模型1 IntroductionLeNet、AlexNet和VGG在设计上的共同之处是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。其中,AlexNet和VGG对LeNet的改进主要在于如何对这两个模块加宽(增加通道数)和加深。而网络中的网络(NiN)提出了另外一个思路,即串联多个由卷积层和“全连接”层构成的小网络来构建一个深层网络。1×1卷积层可以看成全连接层,其中空间维度原创 2020-07-18 17:14:11 · 213 阅读 · 0 评论 -
【深度学习】VGGNet实现(Visual Geometry Group)(pyTorch)
Contents1 VGG基础块2 VGG网络模型3 获取数据和训练模型在这里插入图片描述1 VGG基础块VGG是由几个重复元素的网络块(VGG块)组合起来的。VGG块的组成规律是:连续使用数个相同的填充为1、窗口形状为3×33×3的卷积层后接上一个步幅为2、窗口形状为2×22×2的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。这里使用vgg_block函数来实现这个基础的VGG块,它可以指定卷积层的数量和输入输出通道数。import timeimport torchfrom原创 2020-07-17 22:11:31 · 524 阅读 · 0 评论 -
【深度学习】ALEXNET实现(pyTorch)
Contents1 Intorduction2 AlexNet网络结构3 预处理数据4 训练模型1 Intorduction2012年,AlexNet横空出世。AlexNet使用了8层卷积神经网络,并以很大的优势赢得了ImageNet 2012图像识别挑战赛。它首次证明了学习到的特征可以超越手工设计的特征,从而一举打破计算机视觉研究的前状。AlexNet与LeNet的设计理念非常相似,但也有显著的区别:第一,与相对较小的LeNet相比,AlexNet包含8层变换,其中有5层卷积和2层全连接隐藏层,原创 2020-07-17 22:10:09 · 803 阅读 · 2 评论 -
【深度学习】LeNet实现(pyTorch)
Contents1 LeNet模型2 获取数据和训练模型 LeNet是1998年用来识别手写数字图像的卷积神经网络,它展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的结果。这个奠基性的工作第一次将卷积神经网络推上舞台,为世人所知。1 LeNet模型LeNet分为卷积层块和全连接层块两个部分。卷积层块里的基本单位是卷积层后接最大池化层:卷积层用来识别图像里的空间模式,如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性。卷积层块由两个这样的基本单位重复堆叠构成。原创 2020-07-17 22:06:56 · 321 阅读 · 0 评论 -
【深度学习】卷积层、Padding、Pooling、池化层(pyTorch)
Ccontents1 二维卷积层1.1 二维互相关运算1.2 二维卷积层1.3 图像中物体边缘检测1.4 通过数据学习核数组1.5 卷积运算和互相关运算1.6 特征图和感受野2 填充和步幅2.1 填充(Padding)2.2 步幅(stride)3 多通道输入和多通道输出3.1 多通道输入3.2 多通道输出3.3 1×1卷积层4 池化(pooling)4.1 二维最大池化层和平均池化层4.2 填充和步幅4.3 多通道1 二维卷积层1.1 二维互相关运算import torchfrom torch i原创 2020-07-17 16:38:43 · 3546 阅读 · 0 评论 -
【深度学习】使用GPU计算模型(pyTorch)
使用GPU计算模型1 计算设备PyTorch可以指定用来存储和计算的设备,如使用内存的CPU或者使用显存的GPU。默认情况下,PyTorch会将数据创建在内存,然后利用CPU来计算。# 用torch.cuda.is_available()查看GPU是否可用:import torchfrom torch import nntorch.cuda.is_available() True# 查看GPU数量torch.cuda.device_count() 1# 查看当前GPU索引号,原创 2020-07-16 22:44:57 · 653 阅读 · 0 评论 -
【深度学习】读取和存储训练好的模型参数(pyTorch)
读取、存储和部署模型1 读写Tensor可以直接使用save函数和load函数分别存储和读取Tensor。save使用Python的pickle实用程序将对象进行序列化,然后将序列化的对象保存到disk,使用save可以保存各种对象,包括模型、张量和字典等;而load使用pickle unpickle工具将pickle的对象文件反序列化为内存。import torch from torch import nnx=torch.ones(3)torch.save(x, 'x.pt')x2原创 2020-07-16 20:43:41 · 3342 阅读 · 0 评论 -
【深度学习】自定义神经网络层(pyTorch)
自定义神经网络层1 不含模型参数的自定义层import torchfrom torch import nnclass CenteredLayer(nn.Module): def __init__(self, **kyargs): super(CenteredLayer, self).__init__(**kyargs) def forward(self, x): return x - x.mean() layer = CenteredLa原创 2020-07-16 20:01:21 · 1460 阅读 · 1 评论 -
【深度学习】模型参数的访问、初始化和共享(pyTorch)
Contents程序主要使用到的函数总结如下:模型参数的访问、初始化和共享1 访问模型参数2 初始化模型参数3 自定义初始化方法4 共享模型参数程序主要使用到的函数总结如下:# 1 访问模型参数for name, param in net.named_parameters():for param in net.parameters():self.weight1 = nn.Parameter(torch.rand(20,20))# 2 初始化模型参数init.normal_(param, m原创 2020-07-16 18:05:39 · 726 阅读 · 1 评论 -
【深度学习】模型构造的几种方法(pyTorch)
4.1 模型构造4.1.1 继承Module类来构造模型import torchfrom torch import nnclass MLP(nn.Module): def __init__(self, **kwargs): # **kwargs表示如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使用**kwargs。 super(MLP, self).__init__(**kwargs) self.hidden = n原创 2020-07-16 16:44:44 · 345 阅读 · 0 评论 -
K折交叉验证在KAGGLE比赛——房价预测上的实现【附详细解释】(pyTorch)
K折交叉验证在KAGGLE比赛——房价预测的实现(pyTorch)1 Intorduction2 K折交叉验证3 完整实例步骤3.1 获取和读取数据集3.2 预处理数据3.3 训练模型3.4 K折交叉验证3.5 模型选择3.6 预测结果3.7 Final Results1 Intorduction 通过KAGGLE比赛上最简单的入门实例——房价预测,来完成一个神经网络从搭建到训练、调参、最后预测结果的完整实例。 包括利用pandas数据预处理、模型的设计、超参数的选择等,通过K折交叉验原创 2020-07-16 11:09:44 · 2292 阅读 · 0 评论 -
【深度学习】Dropout实现(pyTorch)
3.13 Dropout解决过拟合问题3.13.1 方法本节中提到的丢弃法特指 倒置丢弃法(inverted dropout)设丢弃概率为p,那么有p的概率hi会被清零,有1−p的概率hi会除以1−p做拉伸以保证不改变下层输入的期望值。在测试模型时,我们为了拿到更加确定性的结果,一般不使用丢弃法。3.13.2 从零开始实现%matplotlib inlineimport torchimport torch.nn as nnimport numpy as npimport syssys.原创 2020-07-15 11:18:56 · 4309 阅读 · 6 评论 -
【深度学习】过拟合 && L2正则化实现(pyTorch)
3.11 模型选择、欠拟合和过拟合3.11.1 训练误差和泛化误差训练误差(training error)指模型在训练数据集上表现出的误差;泛化误差(generalization error)指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。3.11.2 模型选择验证集(validation set)为预留一部分在训练数据集和测试数据集以外的数据来进行模型选择,以进而调参;K折交叉验证(K-fold cross-validation):由于验证数据集不参与模原创 2020-07-15 09:27:54 · 1763 阅读 · 0 评论 -
【深度学习】多层感知机及其实现(pyTorch)
3.8 多层感知机3.8.1 隐藏层为什么引入非线性激活函数?如果不用激励函数, 在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论神经网络有多少层,输出都是输入的线性组合,与单层神经网络效果相同,这种情况就是最原始的感知机;所以引入非线性函数作为激活函数,使得输出不再是输入的线性组合,可以逼近任意函数。3.8.2 激活函数#ReLU(Rectified Linear Unit)%matplotlib inlineimport torchimport matplotlib.py原创 2020-07-14 15:02:12 · 1480 阅读 · 0 评论 -
pyTorch中torch.range()和torch.arange()的区别
torch.range()和torch.arange()的区别x = torch.range(-8, 8)y = torch.arange(-8, 8)print(x, x.dtype)print(y, y.dtype)output: tensor([-8., -7., -6., -5., -4., -3., -2., -1., 0., 1., 2., 3., 4., 5.,6., 7., 8.]) torch.float32 tensor([-8, -7, -6,原创 2020-07-14 12:16:52 · 2470 阅读 · 0 评论 -
【深度学习】Fashion-mnist && softmax实现(pyTorch)
torchvision包是服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision主要由以下几部分构成:torchvision.datasets: 一些加载数据的函数及常用的数据集接口;torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;torchvision.transforms: 常用的图片变换,例如裁剪、旋转等;torchvision.utils: 其他的一些有用的方法。...原创 2020-07-13 21:15:04 · 854 阅读 · 0 评论 -
【深度学习】线性回归实现(pyTorch)
3.1 线性回归import torchfrom time import timea = torch.ones(1000)b = torch.ones(1000)c = torch.zeros(1000)start = time()for i in range(1000): c[i] = a[i] + b[i]print(time()-start)start = time()d = a + bprint(time()-start)0.01695466041564941原创 2020-07-13 20:58:33 · 368 阅读 · 0 评论 -
pyTorch小函数积累【持续更新中······】
torch.mul() 和 torch.mm() 的区别:torch.mul(a, b)是矩阵a和b对应位相乘,a和b的维度必须相等;torch.mm(a, b)是矩阵相乘,a的列数必须等于b的行数;原创 2020-07-12 22:39:49 · 497 阅读 · 1 评论 -
动手学深度学习(pytorch)中d2lzh_pytorch包的安装(附资源)
d2lzh_pytorch包【动手学深度学习(pyTorch)】3.2.1节中原文:“我们将上面的plt作图函数以及use_svg_display函数和set_figsize函数定义在d2lzh_pytorch包里。以后在作图时,我们将直接调用d2lzh_pytorch.plt。由于plt在d2lzh_pytorch包中是一个全局变量,我们在作图前只需要调用d2lzh_pytorch.set_figsize()函数可打印矢量图并设置图的尺寸。”CSDN中下载d2lzh_pytorch包好多都需要积分,原创 2020-07-12 19:49:22 · 12441 阅读 · 4 评论