
pytorch
kiss_the_rain86
这个作者很懒,什么都没留下…
展开
-
循环神经网络-序列表示
自然界种存在很多事物是与时间有关的或者是序列表示的,这种事物我们都可以在pytorch种用tensor进行序列化表示,形式如[seq_len,feature_len]代表一个事物种序列的数量,以及每个序列的长度。举例说明:1、月份-房价对此例,用一个标量就可以表示一个序列。2、图片想象成对其一行行扫描,每一行是一个序列,行数是序列的数量。3、文本信息要表示一个句子,第一个维度表示单词数量,第二个维度是每个单词的编码。one-hot编码,每个向量只有一个1,其余都是0。3.1 one-h转载 2021-05-30 10:41:46 · 248 阅读 · 0 评论 -
用ResNet对CIFAR数据集进行图像分类
CIFAR数据集的导入CIFAR-10数据集有60000张32*32的彩色图片,总共10类,每一类有6000张图片。分为50000张训练集和10000张测试集在torchvision包中可以非常方便地直接导入cifar数据集输入dataroot,是否是训练集,transform等参数。transform参数一般传入transforms.Compose([])进行一些变换这里就可以从网上下载得到CIFAR的原始数据集了cifar_train=datasets.CIFAR10('cifar',Tr转载 2021-04-26 21:24:54 · 1678 阅读 · 0 评论 -
卷积神经网络-Data Argumentation
为了使得训练效果更好,需要尽可能多的数据集。如果数据有限,可以用一些方法提高训练效果。采样参数更少的网络;数据增强翻转、裁剪、旋转、随机移动缩放,用GAN来生成新样本。数据增强有作用,但是不宜过多。...转载 2021-04-19 21:46:48 · 296 阅读 · 0 评论 -
卷积神经网络-nn.Module
nn.Module是所有神经网络层的父类。要实现自己的类的话,要先继承他。特性:1、有很多内置的函数可以直接调用:2、Container 可以用nn.Sequential类3、对网络内的参数更加高效的管理转载 2021-04-19 21:22:42 · 363 阅读 · 0 评论 -
卷积神经网络-ResNet
当网络变的较深时,会出现梯度离散现象,训练效果不增反降。加入一个短路层,允许不经过一部分层直接输出由网络自己选择退化哪一层变成短路层。ResNet在2015年取得了非常大的效果提升。主要是因为他使得训练更深层的网络成为可能。性能对比,计算量较小,同时准确率较高的网络有ResNet-101、Inception-v4。VGG网络的性能尚可,但是计算量较大,因为其卷积核不够小...转载 2021-04-18 21:50:42 · 154 阅读 · 0 评论 -
卷积神经网络概念
线性层的局限图片通常输入维度较大,一个28*28的图片就有784个输入,一个有四个隐含层的网络,就有多达390K个参数。转载 2021-04-02 12:30:26 · 410 阅读 · 0 评论 -
交叉熵损失cross entropy loss
除了均方差,在神经网络中很常用的一个损失函数是交叉熵损失cross entropy loss。这里记录一下它的概念。Entropy熵,衡量不确定性。信息熵越大,混乱程度越大,信息量越大。当概率均等的时候信息熵最大,这时系统对取什么态没有偏向性,所以混乱度最大。Cross Entropy交叉熵,是与两个分布有关的概念KL Divergence 散度,衡量两个分布的差别大小:对于0-1的情况H§=0所以优化H(p,q)就是直接优化散度举例五分类问题真实分布:P1[1 0 0 0 0]原创 2021-03-22 10:12:06 · 3589 阅读 · 0 评论 -
pytorch 寻找二元函数的最小值
定义函数定义函数,用matplotlib画图import numpy as npimport matplotlib.pyplot as pltdef himmelblau(x): return (x[0] ** 2 + x[1] - 11) ** 2 + (x[0] + x[1] ** 2 - 7) ** 2x=np.arange(-6,6,0.1)y=np.arange(-6,6,0.1)print('x,y range:',x.shape,y.shape)X,Y=np.m原创 2021-03-21 17:34:30 · 1552 阅读 · 0 评论 -
pytorch实现感知机
单层感知机模型,每一个输入x与其权值w相乘求和然后加上一个偏置权值w的编号,第一位是上一层的层数索引,第二位是下一层的索引单层感知机的梯度推导损失函数E:对各个权值求导:一步步向前求导可以得到关于x的导数...转载 2021-03-20 10:52:11 · 761 阅读 · 0 评论 -
常见的Loss函数
主要有均方差和交叉熵损失MSE目标与计算之间差的平方和。注意norm2是要开根号的用norm调用如下:torch.norm(y-pred,2).pow(2)用pytorch可以自动求导方法一:用autograd.grad()方法二:用backward函数,会自动计算所有的梯度大小,用grad可以调用...转载 2021-03-19 11:14:45 · 384 阅读 · 0 评论 -
pytorch与随机梯度下降
1、梯度的概念偏导数 :函数在某一点某方向的变化率是一个标量,给定一个方向后,得到这个方向的变化率大小 梯度:某一点的梯度是这个点各个方向的偏导数组成的一个向量梯度的意义大小代表变化率,方向指向函数增长的方向。更新参数的公式:每次减去梯度大小来求取目标函数的最小值:凸函数、局部最小类似一个碗的形状(二维视角)凸函数总可以找到一个全局最优解。现实中遇到的函数却一般是这样的:这是loss关于很多参数三维可视化后的结果。由于有很多局部最小解,较难找到全局最小解。鞍点(saddle转载 2021-03-18 20:32:36 · 167 阅读 · 0 评论 -
pytorch Tensor基础操作汇总
1、数据类型在python中的各种数据类型都用Tensor进行概括:对于string类型,pytorch中要计算string类型的数据,需要先将其也转化为可以处理的Tensor类型one-hot 编码[0,1,0,0],[1,0,0,0]…Embeddingword2vec,glovepytorch中的数据类型如下所列:在程序中可以用.type()和isinstance()检验类型注意部署在CPU和GPU上是不一样的注意pytorch里标量是0维的,生成方法如下:注意py转载 2021-03-18 12:06:05 · 1711 阅读 · 0 评论 -
用pytorch梯度下降实现线性回归
原理我们得到一系列数据,最先试用的方法一般就是尝试用一条直线进行拟合,也就是线性回归。寻找一条直线,可以描述这一系列点的关系。我们有采样得到的实际值y和根据回归直线方程计算得到的wx+b。那么目标就是使这两个值的差距最小化loss=(wx+b−y)2loss=(wx+b-y)^2loss=(wx+b−y)2在本次实验中,在直线方程中引入一个高斯噪声生成了100个随机点。如下:具体来说,优化函数如下:利用梯度下降算法,可以迭代优化参数,使得目标函数逐渐减小。pytorch实现1、计算总误原创 2021-03-13 19:37:00 · 585 阅读 · 0 评论 -
关于神经网络中梯度概念的浅显易懂解释
梯度是神经网络里绕不开的一个概念,看到一个视频,解释得很简单明了:一句话:梯度是一个向量,用来指明在函数的某一点,沿着哪个方向函数值上升最快,这个向量的大小指明函数值上升程度(速度)的大小。接下来举例所以本质上,梯度就是一个向量,如果函数是n元函数,这个向量就是由n个元素组成。如果是二元函数,这个向量就是:在(1,1)这一点,沿着方向(3,1)函数值上升速度最快。如图,红色是函数C(x,y)的图像,在(1,1)这一点,可以看到沿着(3,1)移动,函数值是上升最快的。在机神经网络种,我们经原创 2021-02-15 18:04:24 · 12889 阅读 · 0 评论