![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
从零开始学Pytorch
以《动手深度学习》为载体,手把手教你学pytorch
小小谢先生
拿过大厂、银行、国企、事业单位、研究所等公司offer。
致力于信创产业,人工智能布道者
展开
-
Pycharm运行项目代码时输入可选参数
当我们在跑神经网络的代码时,需要输入一些可选参数,比如权重文件、数据路径等一些参数时,就需要在pycharm输入参数,下面是输入参数的方法:1、点击pycharm右上角的这个按钮,选中“Edit configuration”2、然后在弹出来的界面填写你需要的参数,如下图3、直接在“Script parameters”输入参数名字和参数值,不管是路径名还是参数值,都不用加“”(双引号)4、 最后点击run直接运行就可以。...原创 2021-12-05 21:31:26 · 3558 阅读 · 8 评论 -
yolov3训练误差可视化
通过把yolov3训练出来的效果可视化:可以用python可视化,也可以直接在代码里面用tensorboardX可视化。import reimport pandas as pdfrom matplotlib import pyplot as pltdef read_data(filename): # 1: 3983.445801, 3983.445801 avg loss, 0.000000 rate, 8.518392 seconds, 128 images patt原创 2020-10-25 20:38:22 · 1591 阅读 · 1 评论 -
cfg文件搭建神经网络并用pytorch读取创建模型
cfg是配置文件,一般为了代码的可读性,把一层层的神经网络用cfg格式文件保存,用的时候可以直接读取调用,简单轻便。以下用一个例子来了解。下面cfg文件是yolov3的网络层次:[net]# Testingbatch=1subdivisions=1# Training# batch=64# subdivisions=2width=416height=416channels=3momentum=0.9decay=0.0005angle=0saturation = 1.5e原创 2020-10-24 16:49:43 · 3801 阅读 · 15 评论 -
从零开始学Pytorch(十八)之kaggle图像分类
我们将运用在前面几节中学到的知识来参加Kaggle竞赛,该竞赛解决了CIFAR-10图像分类问题。比赛网址是https://www.kaggle.com/c/cifar-10.import numpy as npimport torchimport torch.nn as nnimport torch.optim as optimimport torchvisionimport t...原创 2020-03-26 23:15:41 · 1047 阅读 · 3 评论 -
从零开始学Pytorch(十七)之样式分格
样式迁移我们介绍如何使用卷积神经网络自动将某图像中的样式应用在另一图像之上,即样式迁移(style transfer)。这里我们需要两张输入图像,一张是内容图像,另一张是样式图像,我们将使用神经网络修改内容图像使其在样式上接近样式图像。图中的内容图像为西雅图郊区的雷尼尔山国家公园(Mount Rainier National Park)拍摄的风景照,而样式图像则是一副主题为秋天橡树的油画。最终输...原创 2020-03-23 23:24:07 · 741 阅读 · 1 评论 -
从零开始学Pytorch(十七)之目标检测基础
目标检测和边界框%matplotlib inlinefrom PIL import Imageimport syssys.path.append('/home/input/') #数据集路径import d2lzh1981 as d2l #已封装好的包# 展示用于目标检测的图d2l.set_figsize() #已封装好的包img = Image.open('/home...原创 2020-03-22 23:28:07 · 1476 阅读 · 0 评论 -
从零开始学Pytorch(十六)之模型微调
微调在前面的一些章节中,我们介绍了如何在只有6万张图像的Fashion-MNIST训练数据集上训练模型。我们还描述了学术界当下使用最广泛的大规模图像数据集ImageNet,它有超过1,000万的图像和1,000类的物体。然而,我们平常接触到数据集的规模通常在这两者之间。假设我们想从图像中识别出不同种类的椅子,然后将购买链接推荐给用户。一种可能的方法是先找出100种常见的椅子,为每种椅子拍摄1,...原创 2020-03-20 23:26:15 · 914 阅读 · 0 评论 -
从零开始学Pytorch(十五)之数据增强
图像增广在深度卷积神经网络里我们提到过,大规模数据集是成功应用深度神经网络的前提。图像增广(image augmentation)技术通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练数据集的规模。图像增广的另一种解释是,随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。例如,我们可以对图像进行不同方式的裁剪,使感兴趣的物体出现在不同位置,从而减轻模型...原创 2020-03-20 22:51:47 · 1006 阅读 · 0 评论 -
从零开始学Pytorch(十四)之优化算法进阶
动量目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向。因此,梯度下降也叫作最陡下降(steepest descent)。在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新自变量。然而,如果自变量的迭代方向仅仅取决于自变量当前位置,这可能会带来一些问题。对于noisy gradient,我们需要谨慎的选取学习率和batch size, 来控制梯度方差和收敛的结果。...原创 2020-03-17 22:51:00 · 733 阅读 · 0 评论 -
从零开始学Pytorch(十三)之梯度下降
梯度下降%matplotlib inlineimport numpy as npimport torchimport timefrom torch import nn, optimimport mathimport syssys.path.append('/home/input')import d2lzh1981 as d2l一维梯度下降证明:沿梯度反方向移动自变量可以减小...原创 2020-03-16 23:04:08 · 750 阅读 · 0 评论 -
从零开始学Pytorch(十二)之凸优化
尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。优化方法目标:训练集损失函数值深度学习目标:测试集损失函数值(泛化性)%matplotlib inlineimport syssys.path.append('/home/input')import d2lzh1981 as d2lfrom mpl_toolkits import m...原创 2020-03-16 22:46:56 · 919 阅读 · 0 评论 -
从零开始学Pytorch(十一)之ModernRNN
RNN:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ycy6d8iB-1584285348969)(https://cdn.kesci.com/upload/image/q5jjvcykud.png?imageView2/0/w/320/h/320)]Ht=ϕ(XtWxh+Ht−1Whh+bh)H_{t} = ϕ(X_{t}W_{xh} + H_{t-1}W...原创 2020-03-15 23:22:38 · 831 阅读 · 0 评论 -
从零开始学Pytorch(十)之循环神经网络基础
本节介绍循环神经网络,下图展示了如何基于循环神经网络实现语言模型。我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量HHH,用HtH_{t}Ht表示HHH在时间步ttt的值。HtH_{t}Ht的计算基于XtX_{t}Xt和Ht−1H_{t-1}Ht−1,可以认为HtH_{t}Ht记录了到当前字符为止的序列信息,利用HtH_{t}Ht对序列的下...原创 2020-03-14 23:43:10 · 777 阅读 · 0 评论 -
从零开始学Pytorch(九)之批量归一化和残差网络
对输入的标准化(浅层模型)处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使各个特征的分布相近批量归一化(深度模型)利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。1.对全连接层做批量归一化位置:全连接层中的仿射变换和激活函数之间。全连接:x=Wu+boutput=ϕ(x)\boldsymbo...原创 2020-03-08 23:07:44 · 960 阅读 · 0 评论 -
从零开始学Pytorch(八)之Modern CNN
LeNet: 在大的真实数据集上的表现并不尽如⼈意。1.神经网络计算复杂。2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。机器学习的特征提取:手工定义的特征提取函数神经网络的特征提取:通过学习得到数据的多级表征,并逐级表⽰越来越抽象的概念或模式。AlexNet首次证明了学习到的特征可以超越⼿⼯设计的特征,从而⼀举打破计算机视觉研究的前状。特征:8层变换,其中有5层卷积...原创 2020-03-04 22:23:18 · 765 阅读 · 0 评论 -
从零开始学Pytorch(七)之卷积神经网络
卷积神经网络基础我们介绍卷积神经网络的卷积层和池化层,并解释填充、步幅、输入通道和输出通道的含义。import torchfrom torch.autograd import Variablea=Variable(torch.FloatTensor([[2.,4.]]),requires_grad=True)b=torch.zeros(1,2)b[0,0]=a[0,0]**2+a[0,...原创 2020-03-01 23:12:38 · 987 阅读 · 0 评论 -
从零开始学Pytorch(六)之梯度消失、梯度爆炸
深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸(explosion)。当神经网络的层数较多时,模型的数值稳定性容易变差。假设一个层数为的多层感知机的第层的权重参数为,输出层的权重参数为。为了便于讨论,不考虑偏差参数,且设所有隐藏层的激活函数为恒等映射(identity mapping)。给定输入,多层感知机的第层的输出。此时,如果层数较大,的计算可能会出现衰减或爆炸。举个例...原创 2020-02-28 23:05:40 · 3289 阅读 · 0 评论 -
从零开始学Pytorch(五)之欠拟合和过拟合
本文首发于微信公众号“计算机视觉cv”模型选择、过拟合和欠拟合训练误差和泛化误差训练误差(training error)指模型在训练数据集上表现出的误差,泛化误差(generalization error)指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。...原创 2020-02-25 22:35:27 · 965 阅读 · 1 评论 -
从零开始学Pytorch(四)之softmax与分类模型
softmax的基本概念分类问题一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度。图像中的4像素分别记为x1,x2,x3,x4x_1, x_2, x_3, x_4x1,x2,x3,x4。假设真实标签为狗、猫或者鸡,这些标签对应的离散值为y1,y2,y3y_1, y_2, y_3y1,y2,y3。我们通常使用离散的数值来表示类别,例如y1=1,y2=2,y3...原创 2020-02-21 12:02:23 · 1888 阅读 · 0 评论 -
从零开始学Pytorch(三)之多层感知机的实现
多层感知机的基本知识我们将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的概念。隐藏层下图展示了一个多层感知机的神经网络图,它含有一个隐藏层,该层中有5个隐藏单元。表达公式设小批量样本X∈Rn×d\boldsymbol{X} \in \mathbb{R}^{n \times d}X∈Rn×d,nnn为批量大小,ddd为1输入个数。假设多层感知机...原创 2020-02-19 23:10:37 · 2267 阅读 · 1 评论 -
从零开始学Pytorch(零)之安装Pytorch
本文首发于公众号”计算机视觉cv“Pytorch优势 聊聊为什么使用Pytorch,个人觉得Pytorch比Tensorflow对新手更为友善,而且现在Pytorch在学术界使用的得更多,大有逆袭Tensorflow之势。最近两年的顶会文章中,代码用Pytorch的比Tensorflow多。大家如果对Tensorflow也感兴趣,完全可以学习了Pytorch之后继续学习Tens...原创 2020-02-15 21:29:48 · 842 阅读 · 0 评论 -
Pytorch相关函数详解
一、backward()pytorch中的自动求导函数。一个神经网络有N个样本,经过这个网络把N个样本分为M类,那么此时backward参数的维度应该是【N *M】。正常来说backward()函数是不需要传入函数的,有时候也需要传入参数,现在来了解backward()需要传入的参数具体含义。不需要传入参数的例子如果out.backward()中的out是一个标量的话(相当于一个神经...原创 2020-02-15 16:35:06 · 1398 阅读 · 1 评论 -
从零开始学Pytorch之线性回归
线性回归主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 线性回归的基本要素模型为了简单起见,这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年)。接下来我们希望探索价格与这两个因素的具体关系。线性回归假设输出与各个输入之间是线性关系:数据集我们通常收集一系列的真实数据,例...原创 2020-02-14 15:27:23 · 722 阅读 · 0 评论 -
从零开始学Pytorch之数据操作
import torchtorch.manual_seed(0)torch.cuda.manual_seed(0)print(torch.__version__)输出pytorch的版本号创建Tensor创建一个5x3的未初始化的Tensor:x = torch.empty(5, 3)print(x)输出为:tensor([[0.0000e+00, 1.0842e-1...原创 2020-01-10 18:46:58 · 983 阅读 · 0 评论