pytorch深度学习
本专栏主要用pytorch来进行实现深度学习中的一些常见问题,提供相关软件安装和具体实现代码。希望对需要的同学有所帮助!(专栏使用的torch版本是1.7.1 cuda版本为10.0)。
毛毛真nice
首先祝大家在新的一年里学业进步、科研顺利!
去年目标已实现(CSDN总排名前4W),今年新目标,冲进前1W。博客内容主要还是SAR、深度学习等。同时,我也会在文章内容和结构上不断进行优化,为大家输出更优质的知识。
加油!
(项目代做和专业指导请联系QQ:1441504748,备注CSDN)
展开
-
卷积神经网络中各层的作用
卷积神经网络中各层的作用原创 2022-06-19 17:12:36 · 6189 阅读 · 0 评论 -
分享几个有关PyTorch深度学习的链接
今天这篇文章给大家分享几个有用的深度学习链接;当前的超分辨率技术调查:https://arxiv.org/pdf/1902.06068.pdfIan Goodfellow关于GAN 的演讲:https://www.youtube.com/watch?v=ZrxFNMGn0You Only Look Once(YOLO),一组快速对象检测模型和很可读的一些文章:https://pjreddie.com/darknet/yoloCleverHans,面向Tensorflow和PyTorch的一个对抗式原创 2022-03-01 20:02:57 · 602 阅读 · 0 评论 -
调试GPU问题——看看你的GPU到底在干什么?
今天我们来谈谈使用GPU时,常常会面临的一个内存不足的问题,以及如何解决。当我们在训练较大的深度学习模型时,你很快就会发现,你花了那么多钱买的炫酷的GPU(或者可能更明智地使用了云实例上的GPU)会经常出问题,总是抱怨内存不足。不过,要知道GPU有数GB的内存!怎么可能不足呢?模型往往会占用大量内存。例如,ResNet-152有约6000万激活,所有这些都会占用GPU上宝贵的空间。下面我们来看看GPU内部,确定内存不足时可能在做什么。检查GPU如果你使用了一个NVIDIA GPU(如果你使用的是其他原创 2022-03-01 17:05:06 · 1328 阅读 · 0 评论 -
百尺竿头,更进一步——如何最后一步再提升一下模型的精度?
今天来讲一讲,如何在模型已经取得不错的精度的情况下,进一步提升模型的性能。一句话:从小到大,逐步变大比如,我们在256x256图像上训练,可以多创建几个数据集,其中的图像缩放为64x64和128x128。用64x64的数据集创建你的模型,照常进行微调,然后用128x128的数据集训练同样的模型。不是从头开始,而是使用之前训练得到的参数。一旦看起来已经最大限度地对这个128x128的数据进行了训练,再转向你的目标数据,即256x256的数据。你可能会发现准确度会有一两个百分点的提升。理论依据:用较低的分原创 2022-03-01 16:18:53 · 850 阅读 · 0 评论 -
深度学习——查找学习率
我们在训练神经网络模型时,能修改最多的超参数就是学习率,但是大部分方法都只是提议使用一个相当小的数,让自己试验不同的值。因此,很多人都是以这种方式来为他们的架构发现最优学习率,通常会采用一种称为网格搜索(grid search)的技术,就是穷尽搜索一个学习率值的子集,将结果与一个验证数据集比较。这会浪费大量的时间。这里提出一个更为简洁、快速的方法,以便我们找到合适的学习率这种方法是:在一个epoch期间,首先从一个小的学习率开始,每一个小批次增加到一个更大的学习率,直到这个epoch结束时得到一个很大的学原创 2022-03-01 16:11:43 · 1270 阅读 · 0 评论 -
深度学习模型预测及模型的保留
今天这篇文章讨论一下我们进行深度学习时,如何将预测的结果如何转换为对应的标签以及如何将最后的模型进行保存和加载。预测为了更清晰地说明整个过程,我们还是以代码来说明一下:from PIL import Iamgelabels=['cat','fish']img=Image.open(FileName)img=transforms(img)img=img.unsequeeze(0)prediction=simplenet(img)prediction=prediction.argmax()原创 2022-02-28 17:25:09 · 1393 阅读 · 0 评论 -
如何创建一个网络
今天来谈谈,初入深度学习,我们如何搭建一个简单的网络模型,话不多说,直接上代码:class SimpleNet(nn.Moudle):def _init_(self): super(Net,self)._init_() self.fc1=nn.Linear(12288,84) self.fc2=nn.Linear(84,50) self.fc3=nn.Linear(50,2) def forward(self): x=x.view(-1,12288)原创 2022-02-28 17:01:02 · 848 阅读 · 0 评论 -
建立深度学习验证和测试数据集
深度学习经常需要面临一个过拟合(overfitting)的问题:你的模型确实能很好地识别所训练的数据,不过不能泛化到它没有见过的例子。比如,它看到一个猫的图像后,除非所有其他猫图像都与这个图像非常相似,否则模型不会认为那是猫。为了防止这种问题的发生,所以我们就需要一个数据集来确保我们的网络没有问题。这里再说一下数据集类型:训练集在训练过程中用来更新模型验证集用来评价模型在这个问题领域的泛化能力,而不是与训练数据拟合程度;不用来直接更新模型。Test set最后一个数据集,训练完成后对模型的性能原创 2022-02-24 16:09:08 · 1048 阅读 · 0 评论 -
深度学习如何建立一个训练数据集?
Pytorch中的torchvision包中有一个名为ImageFolder的类,它能很好地为我们完成一切,只要我们的图像在一个适合的目录结构中,其中每一个目录分别是一个标签(例如,所有猫都在一个名为cat的目录中)。对于我们在对猫狗进行分类时,我们只需要以下代码:import torchvisionfrom torchvision import transformstrain_data_path='"./train/"transforms=transforms.Compose([ tran原创 2022-02-23 22:03:05 · 1807 阅读 · 0 评论 -
Pytorch和数据加载器
今天我们来谈谈,当我们拥有数据集时,如何对这数据集进行处理,将数据集放入模型中进行预测。要加载数据并转换为可以进行训练的格式,这常常时数据科学中占用我们相当多时间的领域之一。Pytorch开发了与数据交互的标准约定,所以能一致地处理数据,不论是处理图像、文本还是音频。与数据交互的两个主要约定是数据集(dataset)和数据加载器(data loaders)。数据集是一个Python类,使我们能够获得能够提供给神经网络的数据。数据加载器则是从数据集向网络提供数据(这可能包干很多信息,比如有多少个工作进程向原创 2022-02-23 21:44:31 · 550 阅读 · 0 评论 -
深度学习中最基本的操作单元——张量
今天我们来谈一下,深度学习中最基本的数据操作单元——张量张量是一个数字容器,同时也是定义张量转换来生成新张量的一组规则,如果对这个概念还是感觉到比较难理解的同学,我们可以将张量想象成多维数组。每个张量有一个秩或者阶(rank),这对应它的维度空间。一个简单标量(如1)可以表示为秩为0的张量,向量秩为1,一个nxn的矩阵秩为2,以此类推。张量操作如果查看PyTorch文档(https://oreil.ly/1Ev0-),会看到大量可以在张量上应用的函数,从查找最大元素到应用傅里叶变换一应俱全。一般来说,原创 2022-02-11 09:33:56 · 1512 阅读 · 0 评论 -
如何组装深度学习的计算机
今天这篇博客来讲讲进行深度学习时,所需的设备配置的问题。1.如果需要运行特别大的深度学习模型,可以用一些在线的资源,比如华为云、Paddle、Amazon Web Services、Google Cloud、Microsoft Azure等云计算资源。2.如果资金比较充足,可以自己组装深度学习的计算机,那么就需要考虑到CPU、GPU、固态硬盘…这里简要介绍一下所需的基本的配置。GPU每一个深度学习机器的核心是GPU,它要为大部分PyTorch计算提供动力,这可能也是机器中最贵的部件。近几年来,由于比原创 2022-02-10 21:27:44 · 2002 阅读 · 0 评论 -
各种超参数对模型容量的影响
大部分超参数可以通过推理其是否增加或减少模型容量来设置。各种超参数对模型的影响见下表:注:文章摘选自《Deep Learning》Iran Goodfellow原创 2022-01-19 09:54:35 · 884 阅读 · 0 评论 -
深度学习如何选择超参数
大部分深度学习算法都有许多超参数来控制不同方面的算法表现。有些超参数会影响算法的运行的时间和存储成本,有些超参数会影响学习到的模型质量以及在新输入上推断正确结果的能力。有两种选择超参数的基本方法:手动选择和自动选择。手动选择超参数需要了解超参数做了些什么,以及机器学习模型如何才能取得良好的泛化。自动选择超参数算法大大减少了了解这些想法的需求,但它们往往需要更高的计算成本。手动设置超参数,我们必须了解超参数、训练误差、泛化误差和计算资源(内存和运行时间)之间的关系。这需要切实了解一个学习算法有效容量的基础原创 2022-01-18 16:17:32 · 1887 阅读 · 0 评论 -
默认的基准模型
再确定性能度量和目标后,任何实际应用的下一步是尽快建立一个合理的端到端的系统。根据问题的复杂性,项目开始时可能无须使用深度学习。如果只需正确地选择几个线性权重就可能解决问题,那么项目可以开始于一个简单的统计模型,如逻辑回归。如果问题属于“AI-完全”类的,如对象识别、语音识别、机器翻译等,那么项目开始于一个合适的深度学习模型,效果会比较好。首先,根据数据的结构选择一类合适的模型。如果项目是以固定大小的向量作为输入的监督学习,那么可以使用全连接的前馈网络。如果输入已知的拓扑结构(例如,输入的是图像),那原创 2022-01-17 16:18:53 · 2167 阅读 · 0 评论 -
深度学习中如何决定是否需要收集更多数据
最近在阅读Goodfellow的《深度学习》中发现在训练模型时,如何确定数据集的数量多少的经验,感觉很有用,这里分享给大家。在建立第一个端到端的系统后,就可以度量算法性能并决定如何改进算法。许多机器学习新手都忍不住尝试很多不同的算法来进行改进。然而,收集更多的数据往往比学习算法要有用得多。那么如何判断是否需要更多的数据?1:确定训练集上的性能是否可以接受如果模型在训练集上的性能就很差,学习算法并不能在训练集上学习出良好的模型,那么就没必要收集更多的数据。这个时候,可以尝试增加更多的网络层或每层增加更原创 2022-01-17 11:14:32 · 2417 阅读 · 0 评论 -
运行深度学习模型出现“RuntimeError:expected scalar type Long but found Float”, 成功解决!
最近在做深度学习分类时遇到了如标题所示的错误,奈何不知如何修改,最后经过探索,成功解决!下面直接上报错问题及解决方案。错误解决方案实际做分类时:分类的标签应该是long,图像是float32因此,将数据类型修改一下就成功了!貌似又有新的bug了,不过不要紧,待我成功解决,再来分享给大家!...原创 2021-06-09 10:05:43 · 12869 阅读 · 3 评论 -
YOLO v3 代码及数据集下载(小白教程---超详细)
YOLO v3 代码及数据集下载Git下载YOLO v3下载配置weights下载coco数据集最近作为小白刚接触YOLO v3 对于github的使用也经历了不少波折,经过自己的摸索之后,对YOLO v3代码下载和数据集下载有了一些经验,下面写成教程呈现给大家,希望能帮助到刚入门的同学。Git下载在正式下载YOLO v3之前,这里我们要下载一款常用的软件 Git ,直接给出大家官网,然后对照自己的计算机版本安装相应的Git版本https://git-scm.com/download/win下载好原创 2021-03-30 22:47:30 · 8955 阅读 · 0 评论 -
YOLOV3学习资源和笔记
最近在学习YOLOv3,有一些东西都挺有用的,不想以后翻来翻去找,这里总结了一些有用的文章地址,供大家学习使用。YOLO官网:https://pjreddie.com/darknet/yolo/YOLOv3论文链接:https://pjreddie.com/media/files/papers/YOLOv3.pdfGithub代码地址:https://github.com/pjreddie/darknet论文翻译:https://zhuanlan.zhihu.com/p/34945787如何训练自原创 2021-03-24 21:15:43 · 113 阅读 · 0 评论 -
利用pytorch 实现Bi-directional Recurrent Neural Network (BRNN)
利用pytorch 实现BRNN相关代码输出结果今天我们来实现Bi-directional Recurrent Neural Network (BRNN),具体原理可查阅相关文献,这里仅给出实现代码及输出结果。相关代码import torch import torch.nn as nnimport torchvisionimport torchvision.transforms as transforms# Device configurationdevice = torch.devic原创 2021-03-22 14:24:13 · 1000 阅读 · 0 评论 -
利用pytorch 实现循环神经网络(RNN)
利用pytorch 实现循环神经网络循环神经网络代码实现输出结果循环神经网络这里有一篇英文文章说的比较好,这里我直接拿来用了,同时也可以帮大家提升一下英文水平,哈哈哈原文代码实现import torchimport torch.nn as nnimport torchvisionimport torchvision.transforms as transforms#device configurationdevice=torch.device('cuda'if torch.cuda原创 2021-03-22 10:30:04 · 1483 阅读 · 0 评论 -
利用pytorch 实现深度残差网络(deep_residual_neural_network)
利用pytorch 实现深度残差网络深度残差网络代码实现输出结果深度残差网络残差网络是由来自Microsoft Research的4位学者提出的卷积神经网络,在2015年的ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)中获得了图像分类和物体识别的优胜。 残差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题 。原创 2021-03-21 22:16:31 · 1508 阅读 · 1 评论 -
利用pytorch实现卷积神经网络
利用pytorch实现卷积神经网络卷积神经网络代码实现输出结果卷积神经网络卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification原创 2021-03-21 13:44:17 · 601 阅读 · 0 评论 -
使用pytorch实现前馈神经网络
使用pytorch实现前馈神经网络前馈神经网络MNIST数据集代码实现结果显示前馈神经网络前馈神经网络(feedforward neural network,FNN),简称前馈网络,是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中,各神经元可以接收前一层神经元的信号,并产生输出到下一层。第0层叫输入层,最后一层叫输出层,其他中间层叫做隐含层(或隐藏层、隐层)。隐层可以是一层。也可以是多层。MNIST数据集大多数示例使用手写数字的MNIST数据集原创 2021-03-21 07:37:34 · 1950 阅读 · 1 评论 -
利用pytorch实现logistic regression
利用pytorch实现logistic regressionLogistic regression代码实现结果输出Logistic regression关于Logistic regresssion 的讲解我在之前的文章有叙述,这里大家直接参考之前的文章即可。Logistic regression原理详解.代码实现import torchimport torch.nn as nnimport torchvisionimport torchvision.transforms as transfo原创 2021-03-19 08:53:16 · 212 阅读 · 0 评论 -
利用pytorch实现Linear regresssion
利用pytorch实现Linear regresssion什么是线性拟合?代码实现输出结果什么是线性拟合?拟合就是为了找到那条,对所有点来说,残差平方和最小的直线,线性回归也是。 回归是国外的讲法叫regression,命名的统计学家是想说,这些点都围绕在一条看不见的直线,直线周围的点若偏离的大了感觉就有回归直线,向直线靠拢的趋势。代码实现import torchimport torch.nn as nnimport numpy as npimport matplotlib.pyplot as原创 2021-03-18 17:20:19 · 147 阅读 · 0 评论 -
利用pytorch预训练resnet模型并保存模型及参数
利用pytorch预训练resnet模型并保存模型及参数Resnet模型简介预训练模型及保存输出结果Resnet模型简介若将输入设为X,将某一有参网络层设为H,那么以X为输入的此层的输出将为H(X)。一般的CNN网络如Alexnet/VGG等会直接通过训练学习出参数函数H的表达,从而直接学习X -> H(X)。而残差学习则是致力于使用多个有参网络层来学习输入、输出之间的参差即H(X) - X即学习X -> (H(X) - X) + X。其中X这一部分为直接的identity mapping原创 2021-03-18 15:46:46 · 3197 阅读 · 0 评论 -
pytorch->numpy数据转换
今天给大家做一个pytorch和numpy数据之间的相互转换,代码比较简单,这里不再多说,直接上代码:import numpy as npimport torch#create a numpy arrayx=np.array([[1,2],[3,4]])print('x_numpy:',x)#convert the numpy array to a torch tensor.y=torch.from_numpy(x)print('y_tensor:',y)#convert the t原创 2021-03-17 22:31:21 · 421 阅读 · 0 评论 -
利用pytorch对二维数据进行求解梯度
今天我们利用pytorch对二维数据进行求导并输出显示,主要用到pytorch中的Linear()、MSELoss()等函数,具体的求导过程详见下面代码:import torch#create tensors of shape(10,3)and (10,2)x=torch.randn(10,3)y=torch.randn(10,2)#build a fully connected layerlinear=nn.Linear(3,2)print('w:',linear.weight)pri原创 2021-03-17 22:19:10 · 499 阅读 · 0 评论 -
利用pytorch实现对简单函数求导
今天利用pytorch进行一个简单线性函数的求导过程,比较简单,这里就不再进行赘述了,直接上代码:#Basic autograd exampleimport torch#create tensorsx=torch.tensor(1.,requires_grad=True)w=torch.tensor(2.,requires_grad=True)b=torch.tensor(3.,requires_grad=True)#build a computational graphy=w*x+原创 2021-03-17 21:53:05 · 405 阅读 · 0 评论 -
利用pytorch实现常用数据集的下载与显示
利用pytorch实现常用数据集的下载与显示常用数据集介绍MNIST共有7万张图片。其中6万张用于训练神经网络,1万张用于测试神经网络。每张图片是一个28*28像素点的0~9的手写数字图片。黑底白字。黑底用0表示,白字用0~1之间的浮点数表示,越接近1,颜色越白。我们把784个像素点组成一个长度为784的一维数组,这个一维数据就是我们要输入神经网络的输入特征。MNIST数据集还提供了每张图片对应的标签,以一个长度为10的一维数组给出。CIFAR-10该数据集共有60000张彩色图像,这些图像是3原创 2021-03-17 21:34:11 · 425 阅读 · 0 评论 -
神经网络正则化实现
本篇文章将实现神经网络的正则化,相比上一篇文章的代码,本篇文章我们仅在正则化部分进行了添加实现,下面是代码:import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsfrom visdom import Visdombatch_size=200learning_ra原创 2021-01-09 22:13:00 · 785 阅读 · 0 评论 -
训练-验证-测试
本篇文章主要讲一下如何设置训练集、验证集、测试集来实现一个多层神经网络分类过程:import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsbatch_size=200learning_rate=0.01epochs=10train_db = datasets.M原创 2021-01-09 22:02:28 · 959 阅读 · 0 评论 -
Visdom可视化操作
为了能够实时监测我们运行程序中的一些权值、参数变化,pytorch也提供了类似于TensorFlow可视化第三方库,下面我们将利visdom可视化函数来实现这一过程:import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsfrom visdom import Visdo原创 2021-01-09 09:15:41 · 365 阅读 · 0 评论 -
激活函数与GPU加速
本篇文章将为大家介绍神经网络中的激活函数和GPU加速方法,具体代码中有相应的语句来进行实现。下面给出代码:import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsbatch_size=200learning_rate=0.01epochs=10train_lo原创 2021-01-09 09:01:55 · 168 阅读 · 1 评论 -
多层神经网络分类问题
在本篇文章中,我们实现一个利用三层神经网络来实现一个分类问题,相比上一篇文章,就是在神经网络层数上进行了改变,下面就直接看代码吧:import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsbatch_size=200learning_rate=0.01epochs=原创 2021-01-09 08:40:27 · 429 阅读 · 0 评论 -
LR多分类问题实现
今天我们利用MNIST数据集来实现一个多分类问题实战,代码浅显易懂,所以就直接给大家代码吧,不懂的小伙伴欢迎在评论区留言。import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsbatch_size=200learning_rate=0.01epochs=10#原创 2021-01-09 08:34:07 · 299 阅读 · 0 评论 -
优化实例
今天我们来看来看一个使用Adam来对程序进行优化的案例,代码中所需的第三方库大家可以自行下载。下面直接给出代码:import numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import pyplot as pltimport torchdef himmelblau(x): return (x[0] ** 2 + x[1] - 11) ** 2 + (x[0] + x[1] ** 2原创 2021-01-09 08:29:43 · 99 阅读 · 0 评论 -
手写数字识别
手写数字识别utilsmnist_train运行结果sampletest损失函数曲线今天我们来做一个手写数字识别的程序,程序中会自动下载用于手写数字识别的数据集。本文主要包括数字显示和识别训练两个子程序,下面把代码给大家:utilsimport torchfrom matplotlib import pyplot as pltdef plot_curve(data): fig = plt.figure() plt.plot(range(len(data)), data,原创 2021-01-08 11:17:46 · 534 阅读 · 0 评论 -
利用numpy简单回归案例
今天我们只利用python根据回归原理进行一个简单的回归案例的实现,下面给出实现代码:import numpy as np# y = wx + bdef compute_error_for_line_given_points(b, w, points): totalError = 0 for i in range(0, len(points)): x = points[i, 0] y = points[i, 1] totalError原创 2021-01-08 10:03:46 · 180 阅读 · 0 评论