pytorch
fly_Xiaoma
技术分享,技术学习
展开
-
动态调整模型中的学习率
调整模型中学习率的方法主要有:一种是修改optimizer.param_groups中对应的学习率 另一种是新建优化器注意:由于optimizer十分轻量级,构建开销很小,故可以构建新的optimizer。但新建优化器会重新初始化动量等状态信息,这对使用动量的优化器来说(如带momentum的sgd),可能会造成损失函数在收敛过程中出现震荡。首先我们建立一个LeNet网络:imp...原创 2020-03-05 16:57:01 · 1565 阅读 · 0 评论 -
nn模块中的LSTM与Embedding
1.LSTMRNN和RNNcell层的区别在于前者能够处理整个序列,而后者一次只处理序列中一个时间点的数据,前者封装更完备易于使用,后者更具灵活性。RNN层可以通过组合调用RNNCell来实现。例1:RNNimport torch as tfrom torch.autograd import Variable as Vimport torch.nn as nnt.manual_...原创 2020-03-05 03:03:00 · 2359 阅读 · 0 评论 -
手动实现一个线性回归
# -*- coding: utf-8 -*-# @Time :2020/3/1 11:38# @Author :XiaoMa# @File :5.pyimport torch as tfrom matplotlib import pyplot as plt#设置随机数种子t.manual_seed(1000)from IPython import displ...原创 2020-03-03 20:33:23 · 577 阅读 · 0 评论 -
pytorch中的逐元素、归并操作、比较以及线性代数
1.逐元素操作这部分操作会对tensor的每一个元素(element-wise)进行操作,此类操作的输入与输出形状一致。abs/sqrt/div/exp/fmod/log/pow 绝对值/平方根/除法/指数/求余/求幂 cos/sin/asin/atan2/cosh 三角函数 ceil/round/floor/trunc 上取整/四舍五入/下取整/只保留整...原创 2020-03-03 12:28:36 · 3501 阅读 · 0 评论 -
tensor中的view()、sequeeze()、resize()操作
1. view()tensor.view()方法可以调整tensor的形状,但必须保证调整前后元素总数一致。view不会修改自身的数据,返回的新tensor与原tensor共享内存,即更改一个,另一个也随之改变。在实际应用中,可能经常需要添加或者减少某一维度,这是sequeeze()和unsequeeze()这两个方法就派上了用场。2. unsequeeze()和seque...原创 2020-03-01 11:50:41 · 24423 阅读 · 3 评论 -
卷积 nn.Conv1d()与 nn.Conv2d()
nn.Conv1d(in_channels,out_channels,kernel_size,stride,padding,dilation,groups,bias)一维卷积,这里的一维不仅代表在一个维度上进行卷积,而且代表卷积的方向为一维接口内的参数:in_channels:NLP任务中代表词向量的维度 out_channels:卷积产生的通道数,out_channels==卷积核的...原创 2020-02-24 01:12:25 · 1554 阅读 · 0 评论 -
pytorch中的Autograd(自动微分)
Autograd主要实现反向传播求导数,避免手动计算导数的复杂过程1. autograd.Variable是Autograd中的核心类,它是Tensor的简单封装,并支持Tensor的所有操作。Tensor在被封装为Variable之后,可以调用它的 .backward()实现反向传播,自动计算所有梯度。例如:import torch as timport numpy as np...原创 2020-02-21 18:05:00 · 737 阅读 · 0 评论 -
numpy与tensor中的数组互转
1.tensor转为numpy格式,调用 .numpy()函数如:import torch as timport numpy as npx=t.ones(5).float() #Tensor类型为FloatTensor,也可调用long()方法转为LongTensory=x.numpy()print(x)print(y)##输出tensor([1., 1., 1...原创 2020-02-20 23:10:23 · 2393 阅读 · 0 评论 -
torch.transpose()函数
torch.transpose(Tensor,dim0,dim1)是pytorch中的ndarray矩阵进行转置的操作注意:transpose()一次只能在两个维度间进行转置例如:import torch as tx=t.Tensor(2,3,4,5) #这是一个4维的矩阵(只用空间位置,没有数据)print(x.size())#先转置0维和1维,之后在第2,3维间转置,之后...原创 2020-02-20 21:31:28 · 51556 阅读 · 4 评论 -
pytorch模型预测结果与ndarray互转
预测结果转为numpy:logits=model(feature)#如果模型是跑在GPU上result=logits.data.cpu().numpy() / logits.cpu().numpy()#如果模型跑在cpu上result=logits.data.numpy() / logits.numpy()将矩阵转为tensor:np_arr =...原创 2019-12-15 16:58:24 · 837 阅读 · 0 评论 -
pytorch中的Embedding
词向量(Word Vector),又称为词嵌入(Word Embedding),它是把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间(通常是128维或256维)中,每个词或词组被映射为实数域上的向量。pytorch中,针对词向量有一个专门的层nn.Embedding,用来实现词与词向量的映射。nn.Embedding具有一个权重,形状是(num_embeddings,emb...原创 2019-07-07 12:41:50 · 23000 阅读 · 9 评论 -
pytorch、cuda、python的版本对齐问题
在使用深度学习模型训练的过程中,工具的准备也算是一个良好的开端吧。熟话说完事开头难,磨刀不误砍柴工,先把前期的问题搞通了,能为后期节省不少精力。以pytorch工具为例:pytorch版本为1.0.1,自带python版本为3.6.2 服务器上GPU的CUDA_VERSION=9000注意:由于GPU上的CUDA_VERSION为9000,所以至少要安装cuda版本>=9.0,虽...原创 2019-07-11 09:48:36 · 25754 阅读 · 2 评论 -
pytorch搭建神经网络
# -*- coding: utf-8 -*-#@Time :2019/6/30 21:07#@Author :XiaoMaimport torch as tfrom torch import nnfrom torch.autograd import Variable as V#全连接网络class Linear(nn.Module): def __init__...原创 2019-06-30 21:52:25 · 179 阅读 · 0 评论 -
pytorch中的LSTM
RNN和RNNCell层的区别在于前者能处理整个序列,而后者一次只处理序列中一个时间点的数据,前者封装更完备更易于使用,后者更具灵活性。RNN层可以通过调用RNNCell来实现# -*- coding: utf-8 -*-#@Time :2019/7/1 22:41#@Author :XiaoMaimport torch as tfrom torch.autograd imp...原创 2019-07-01 23:08:01 · 877 阅读 · 0 评论 -
PyTorch模型训练常见错误总结
1、argparse框架中的函数add_argument()parser=argparse.ArgumentParser()parser.add_argument('--gpu',action='store_true',help='whether use gpu')args=parser.parse_args()注意:add_argument()函数中的action参数,当调用'g...原创 2019-07-02 12:00:43 · 2217 阅读 · 0 评论 -
使用anaconda3建立pytorch虚拟环境(Windows/Linux)--个人虚拟环境
虚拟环境:包含一系列功能的安装包由于在anaconda默认环境下使用pip install pytorch总是报安装错误,所以考虑新建一个pytorch的虚拟环境。1、创建虚拟环境打开Anaconda Prompt输入命令行:conda create -n pytorch python=3.6注意:如果是在Linux中需要先添加conda环境:vim ~/.bashrc...原创 2019-06-24 18:04:53 · 11918 阅读 · 0 评论 -
pytorch中优化器总结
以SGD优化器为例:# -*- coding: utf-8 -*-#@Time :2019/7/3 22:31#@Author :XiaoMafrom torch import nn as nnimport torch as tfrom torch.autograd import Variable as V#定义一个LeNet网络class Net(nn.Module...原创 2019-07-03 23:03:39 · 2528 阅读 · 1 评论 -
反向传播梯度的计算
适用pytorch中Variable()函数中的backward()自动计算梯度 手动实现梯度计算(缺点:计算网络复杂时容易出错,难以检查)# -*- coding: utf-8 -*-#@Time :2019/6/29 18:36#@Author :XiaoMaimport torch as tfrom torch.autograd import Variable as V...原创 2019-06-29 18:55:04 · 2558 阅读 · 0 评论 -
pytorch中新建Tensor的常用方法
新建Tensor的常用方法函数 功能 Tensor(*sizes) 基础构造函数 ones(*sizes) 全1的Tensor zeros(*sizes) 全0的Tensor eye(*sizes) 对角线为1,其他为0的Tensor arange(s,e,step) 从s到e,步长为step的一维Tensor linspace(...原创 2019-06-29 19:05:38 · 6859 阅读 · 0 评论 -
pytorch常见的Tensor类型
Tensor有不同的数据类型,每种类型分别有对应CPU和GPU版本(HalfTensor除外)。默认的Tensor是FloatTensor,可通过torch.set_default_tensor_type修改默认tensor类型(如果默认类型为GPU tensor,则所有操作都将在GPU上进行)。Tensor的类型对分析内存占用很有帮助,例如,一个size为(1000,1000,1000)的Flo...原创 2019-06-29 19:22:44 · 6196 阅读 · 0 评论 -
pytorch常用的归并操作
此类操作会使输出形状小于输入形状,并可以沿着某一维度进行指定操作。如加法sum,既可以计算整个tensor的和,也可以计算tensor中每一行或每一列的和。常用的归并操作如下:函数 功能 mean/sum/median/mode 均值/和/中位数/众数 norm/list 范数/距离 std/var 标准差/方差 cumsum/cumprod 累加...原创 2019-06-29 19:38:31 · 321 阅读 · 0 评论 -
pytorch 常用线性函数
Pytorch的线性函数主要封装了Blas和Lapack,其用法和接口都与之类似。常用的线性函数如下:函数 功能 trace 对角线元素之和(矩阵的迹) diag 对角线元素 triu/tril 矩阵的上三角/下三角,可指定偏移量 mm/bmm 矩阵乘法,batch的矩阵乘法 t 转置 dot/cross 内积/外积 inv...原创 2019-06-29 19:45:54 · 1878 阅读 · 0 评论 -
pytorch中nn.functional()学习总结
nn.functional是一个很常用的模块,nn中的大多数layer在functional中都有一个与之对应的函数。nn.functional中的函数与nn.Module()的区别是:nn.Module实现的层(layer)是一个特殊的类,都是由class Layer(nn.Module)定义,会自动提取可学习的参数 nn.functional中的函数更像是纯函数,由def functio...原创 2019-08-19 16:17:58 · 16007 阅读 · 0 评论 -
pytorch中特殊的Module--Sqeuential的三种实现方式
# -*- coding: utf-8 -*-#@Time :2019/7/1 13:34#@Author :XiaoMaimport torch as tfrom torch import nn#Sequential的三种写法net1=nn.Sequential()net1.add_module('conv',nn.Conv2d(3,3,3)) #Conv2D(输...原创 2019-07-01 21:56:09 · 357 阅读 · 0 评论