
PyTorch
PyTorch学习笔记。
大桔骑士v
微软程序员,B站账号:大桔骑士v
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【PyTorch学习笔记】23:nn.LSTM和nn.LSTMCell的使用
1 nn.LSTM该模块一次构造完若干层的LSTM。1.1 构造方法使用nn.LSTM可以直接构建若干层的LSTM,构造时传入的三个参数和nn.RNN一样,依次是:[feature_len,hidden_len,num_layers][feature\_len,hidden\_len,num\_layers][feature_len,hidden_len,num_layers]其中h...原创 2020-02-22 21:29:59 · 26306 阅读 · 9 评论 -
【PyTorch学习笔记】22:使用nn.RNN构建循环网络预测序列数据的例子
简述在这个例子中,从[k,k+n)[k,k+n)[k,k+n)时刻的正弦函数,要去预测[k+t,k+n+t)[k+t,k+n+t)[k+t,k+n+t)时刻的正弦曲线。因为在每个时刻曲线上的点是一个值,所以这个例子中不需要做embedding,也就是feature_len=1。如果要给出49个时刻的点,也就是seq_len=49。如果只提供一条曲线在训练时喂入,也就是batch=1。按照之前...原创 2020-02-21 12:04:58 · 2543 阅读 · 2 评论 -
【PyTorch学习笔记】21:nn.RNN和nn.RNNCell的使用
这节学习PyTorch的循环神经网络层nn.RNN,以及循环神经网络单元nn.RNNCell的一些细节。1 nn.RNN涉及的TensorPyTorch中的nn.RNN的数据处理如下图所示。每次向网络中输入batch个样本,每个时刻处理的是该时刻的batch个样本,因此xtx_txt是shape为[batch,feature_len][batch, feature\_len][batch,f...原创 2020-02-19 15:15:43 · 11606 阅读 · 8 评论 -
【PyTorch学习笔记】20:使用nn.Module类及其周边
关于nn.Module在PyTorch中nn.Module类是用于定义网络中前向结构的父类,当要定义自己的网络结构时就要继承这个类。现有的那些类式接口(如nn.Linear、nn.BatchNorm2d、nn.Conv2d等)也是继承这个类的,nn.Module类可以嵌套若干nn.Module的对象,来形成网络结构的嵌套组合。以下说明使用这个类的一些好处和基本方式。1 嵌套现有的类在torc...原创 2020-02-17 15:08:59 · 1775 阅读 · 0 评论 -
【PyTorch学习笔记】19:Batch Normalization
归一化(Normalization)简述现在常使用ReLU函数,避免梯度弥散的问题,但是有些场合使用Sigmoid这样的函数效果更好(或者是必须使用),如Sigmoid函数当函数值较大或者较小时,其导数都接近0,这会引起梯度弥散,所以要将输入控制在一个较好的范围内,这样才避免了这种问题。Batch Normalization就是为了解决这个需求的,当将输出送入Sigmoid这样的激活函数之前...原创 2019-04-30 12:40:53 · 2074 阅读 · 1 评论 -
【PyTorch学习笔记】18:pooling,up-sample,ReLU
pooling池化是下采样(down-sample)的一种手段,让feature map减小;而up-sample则是上采样,实际上做了放大图像的操作。在CNN中,基本的单元是一个Conv2d,后面配上[Batch Norm, pooling, ReLU],后面三个的顺序不一定。pooling图像的down-sample在图像中要缩小图像的尺寸,常用的是隔行采样的方式,例如纵向每隔一行...原创 2019-04-29 10:21:26 · 3197 阅读 · 1 评论 -
【PyTorch学习笔记】17:2D卷积,nn.Conv2d和F.conv2d
简述2D卷积很适合处理图像输入。以之前的MNIST为例,在使用MLP时,为方便全连接层的处理,将28乘28的输入flatten成了784维的向量,这样就要有784个权值。而使用了2D卷积以后,假设使用3乘3的卷积核,那么每次的输入都是卷积核扫过的3乘3大小的区域,这样就只需要有9个权值,参数量大大减少了。卷积操作:卷积核和扫过的小区域对应位置相乘再求和的操作,卷积完成后一般要加个偏置bias。...原创 2019-04-05 10:42:16 · 29948 阅读 · 10 评论 -
【PyTorch学习笔记】16:Early Stop,Dropout,Stochastic Gradient Descent
Early Stop如果一直训练,训练集上的性能可以一直上升,但验证集上的性能在经过某个点之后就可能开始下降,这时就是模型出现了over-fitting,提前停止就是用来克服over-fitting的。但是没训练完怎么知道哪个点是最大值点呢?可以用经验来判断,比如当连续多个epoch上的验证集Acc.在下降时就停止训练。Dropout简述为每个连接设置一个probability的属性,以...原创 2019-03-28 19:10:05 · 4504 阅读 · 0 评论 -
【PyTorch学习笔记】15:动量(momentum),学习率衰减
动量(momentum)简述之前学习的用梯度更新参数www的公式:wk+1=wk−α⋅∇f(wk)w_{k+1}=w_k - \alpha \cdot \nabla f(w_k)wk+1=wk−α⋅∇f(wk)其中α\alphaα是学习率。现用zk+1=β⋅zk+∇f(wk)wk+1=wk−α⋅zk+1z_{k+1}=\beta \cdot z_k + \nabla f(w_k...原创 2019-03-27 19:57:52 · 12670 阅读 · 0 评论 -
【PyTorch学习笔记】14:划分训练-验证-测试集,使用正则化项
划分训练-验证-测试集简述测试集一般都是客户用来验收模型的,是拿不到的,在Kaggle比赛里就是用来计算选手模型的score的集合。而训练集拿到以后要划分成训练集和验证集,只用训练集来训练,验证集用来以一定的频率对模型的performance做验证,也就是用来防止over-fitting的,在训练过程中可以得到验证集的Loss或者acc.的曲线,在曲线上就能大致判断发生over-fitting...原创 2019-03-27 17:30:54 · 21222 阅读 · 0 评论 -
【PyTorch学习笔记】13:使用Visdom可视化训练-测试过程
在PyTorch的可视化中,相比tensorboardX,Visdom更简洁方便一些(例如对image数据的可视化可以直接使用Tensor,而不必转到cpu上再转为numpy数据),刷新率也更快。安装Visdom直接用pip安装的话在windows上面可能出现问题,先从Github上下载Visdom的源码,进入解压后的目录,执行:pip install -e .即从当前目录下的setup...原创 2019-03-26 15:08:46 · 7051 阅读 · 11 评论 -
【PyTorch学习笔记】12:继承nn.Module定义MLP,使用GPU加速
继承nn.Module定义MLP上一节学习写LR多分类的时候,网络中的参数w和b都是自己手动定义的(而且w的shape是[输出,输入]),对深度学习框架来说其实没必要那么麻烦,可以直接用现成的定义层的方式来定义。import torchfrom torch import nnfrom torch.nn import functional as F# 模拟一张28x28的图片摊平x =...原创 2019-03-25 20:48:37 · 5900 阅读 · 5 评论 -
【PyTorch学习笔记】11:LR做MNIST手写数字的多分类demo
尽管ReLU相比其它激活函数已经大大避免了发生梯度消失或者为0的现象,但不好的参数初始化方法也会导致这种情况的出现。使用标准正态分布初始化这里用torch.randn()来做实际上就是对参数w和b进行了N~(0,1)的标准正态分布初始化,这个初始化值都很小,比较接近0。import torchfrom torch.nn import functional as Ffrom torch i...原创 2019-03-23 23:17:50 · 985 阅读 · 0 评论 -
【PyTorch学习笔记】10:Logistic Regression,Cross Entropy Loss
Logistic Regression简述Logistic Regression虽然叫Regression,但是都用来解决分类问题,这是一个历史遗留问题。虽然它得到的是一个连续的值,它实际上做的是一个分类的工作(而不是回归):y=σ(xw+b)y=\sigma (xw+b)y=σ(xw+b)得到的y在0到1之间,可以看做概率值,也就是将x二分类的概率。如果输出0.4就预测为0,如果输出0....原创 2019-03-23 00:15:49 · 1609 阅读 · 0 评论 -
【PyTorch学习笔记】9:感知机,链式法则,对Himmelblau函数的优化实例
感知机单层感知机的例子import torchfrom torch.nn import functional as Fx = torch.randn(1, 10)w = torch.randn(1, 10, requires_grad=True)# 对输出用sigmoid激活o = torch.sigmoid(x @ w.t())print("输出值:", o)# 计算MSE...原创 2019-03-21 23:26:00 · 1720 阅读 · 0 评论 -
【PyTorch学习笔记】8:激活函数,损失函数,使用PyTorch求导
激活函数在PyTorch的老版本里这些激活函数在torch.nn.functional下,现在大多已经改到了torch下。Sigmoid数据将被映射到0到1之间。f(x)=σ(x)=11+e−xf(x)=\sigma (x)=\frac{1}{1+e^{-x}}f(x)=σ(x)=1+e−x1import torcha = torch.linspace(-100, 100, 10)...原创 2019-03-20 22:57:12 · 2852 阅读 · 1 评论 -
【PyTorch学习笔记】7:Tensor的统计操作,Tensor的高阶操作
Tensor的统计操作范数import torcha = torch.full([8], 1)b = a.reshape([2, 4])c = a.reshape([2, 2, 2])# 求L1范数(所有元素绝对值求和)print(a.norm(1), b.norm(1), c.norm(1))# 求L2范数(所有元素的平方和再开根号)print(a.norm(2), b.n...原创 2019-02-23 20:23:33 · 6439 阅读 · 2 评论 -
【PyTorch学习笔记】6:Broadcasting,对Tensor的合并与拆分,Tensor运算
BroadcastingBroadcasting也就和之前学MPI时候学的广播一样,能够实现自动维度扩展,有点像上节学的expand的功能,但是是自动完成的,而且不需要像repeat那样对数据进行拷贝,可以节省内存。从最后面的维度开始匹配。在前面插入若干维度。将维度的size从1通过expand变到和某个Tensor相同的维度。总之,Broadcasting也就是自动实现了若干uns...原创 2019-02-23 00:23:20 · 6725 阅读 · 1 评论 -
【PyTorch学习笔记】5:对Tensor的变换
对Tensor的变换改变shape调整Tensor的shape(通过返回一个新的Tensor),在老版本中这个函数是view(),功能上都是一样的。import torcha = torch.rand(4, 1, 28, 28)print(a.shape)print(a.reshape(4 * 1, 28, 28).shape)print(a.reshape(4, 1 * 28 *...原创 2019-02-22 00:47:08 · 2183 阅读 · 0 评论 -
【PyTorch学习笔记】4:在Tensor上的索引和切片
在Tensor上的索引和切片一般索引从前往后提供的索引,会依次在每个维度上做索引。import torcha = torch.rand(4, 3, 28, 28)print(a[0].shape)print(a[0, 0].shape)print(a[0, 0, 2, 4]) # 具体到某个元素运行结果:torch.Size([3, 28, 28])torch.Size(...原创 2019-02-20 22:26:24 · 23225 阅读 · 1 评论 -
【PyTorch学习笔记】3:创建Tensor的多种方法
创建Tensor的多种方法从numpy创建import torchimport numpy as npa = np.array([2, 3.3])a = torch.from_numpy(a) # torch.DoubleTensor从list创建a = torch.FloatTensor([2, 3.3]) # 尽量少用这种方式,容易和给shape的情况看混淆b = to...原创 2019-02-19 21:26:26 · 43204 阅读 · 0 评论 -
【PyTorch学习笔记】2:基本数据类型,各个维度的Tensor
基本数据类型简述对于Python的数据类型int、float等,PyTorch中相对应的就是torch.IntTensor、torch.FloatTensor等,如果就是普通的数就用demension是0,如果是数组那就用更高的维度来表示就可以了。上面都是在CPU上的数据类型,如果是在GPU上面的数据类型,那就是torch.cuda.IntTensor、torch.cuda.FloatTen...原创 2019-02-19 16:15:53 · 2579 阅读 · 0 评论 -
【PyTorch学习笔记】1:开发环境搭建,numpy实现简单回归案例
跟着网易云课堂上的新课学习一下PyTorch。开发环境搭建Python版本:3.7。安装CUDA搜索cuda download到CUDA官网下载相应的本地安装版本,安装好后在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\版本号\bin\目录下能看到nvcc.exe,这是CUDA的编译器。使用下面的命令测试CUDA安装成功:nvcc...原创 2019-02-15 22:42:21 · 918 阅读 · 5 评论