随笔分类 - Pytorch
摘要:例一 import torch import torch.nn as nn a = torch.rand([3, 3]) # a是2维的 b = a[:2] # 对a进行切片操作时,只指明了一维。这时的意思是,只对a的第一维进行切片操作,第二维不变,相当于b=a[:2, :] print('a:\n
阅读全文
摘要:参考: Pytorch之contiguous函数 PyTorch中的contiguous
阅读全文
摘要:1. torch.nonzero()的定义 【摘自:Pytorch:torch.nonzero()函数】 2. torch.nonzero()用来筛选张量中符合某个条件的元素,得到这些元素的索引 一维例子: 注意得到的b是二维张量。上述代码的原理是,a>6得到的是一个元素为True或False的张量
阅读全文
摘要:比如,建了一个两层全连接层的神经网络: class LinearClassifier_2layer(nn.Module): def __init__(self, last_layer_dim=None, n_label=None): super(LinearClassifier_2layer, se
阅读全文
摘要:pytorch 中forward 的用法与解释说明 另外,关于__call__()方法,可参考:Python __call__()方法
阅读全文
摘要:torch.cuda.empty_cache()的作用 【摘自https://zhuanlan.zhihu.com/p/76459295】 显存优化 可参考: pytorch 减小显存消耗,优化显存使用,避免out of memory 再次浅谈Pytorch中的显存利用问题(附完善显存跟踪代码)
阅读全文
摘要:pytorch 优化器(optim)不同参数组,不同学习率设置
阅读全文
摘要:在用pytorch搭建和训练神经网络时,有时为了查看非叶子张量的梯度,比如网络权重张量的梯度,会用到retain_grad()函数。但是几次实验下来,发现用或不用retain_grad()函数,最终神经网络的准确率会有一点点差异。用retain_grad()函数的训练结果会差一些。目前还没有去探究这
阅读全文
摘要:【Pytorch】对比clone、detach以及copy_等张量复制操作
阅读全文
摘要:KL散度理解以及使用pytorch计算KL散度 计算例子:
阅读全文
摘要:在pytorch中计算KLDiv loss时,注意reduction='batchmean',不然loss不仅会在batch维度上取平均,还会在概率分布的维度上取平均。 参考:KL散度-相对熵
阅读全文
摘要:本文内容来自知乎:浅谈 PyTorch 中的 tensor 及使用 首先创建一个简单的网络,然后查看网络参数在反向传播中的更新,并查看相应的参数梯度。 # 创建一个很简单的网络:两个卷积层,一个全连接层 class Simple(nn.Module): def __init__(self): sup
阅读全文
摘要:比如有个张量a,那么a.normal_()就表示用标准正态分布填充a,是in_place操作,如下图所示: 比如有个张量b,那么b.fill_(0)就表示用0填充b,是in_place操作,如下图所示: 这两个函数常常用在神经网络模型参数的初始化中,例如 import torch.nn as nn
阅读全文
摘要:一. 安装包 pytorch版本最好大于1.1.0。查看PyTorch版本的命令为torch.__version__ tensorboard若没有的话,可用命令conda install tensorboard安装,也可以用命令pip install tensorboard安装。 注意: tenso
阅读全文
摘要:将tensor按dim方向分割成chunks个tensor块,返回的是一个元组。 示例:
阅读全文
摘要:Pytorch 统计模型参数量 param.numel()
阅读全文
摘要:pytorch是动态图计算机制,也就是说,每次正向传播时,pytorch会搭建一个计算图,loss.backward()之后,这个计算图的缓存会被释放掉,下一次正向传播时,pytorch会重新搭建一个计算图,如此循环。 在默认情况下,PyTorch每一次搭建的计算图只允许一次反向传播,如果要进行两次
阅读全文
摘要:PyTorch trick 集锦 这篇文章介绍了一些PyTorch的一些技术与代码实现,包括:查看模型每层输出详情、梯度裁剪(Gradient Clipping)、学习率衰减、冻结某些层的参数、对不同层使用不同学习率、网络参数初始化、加载内置预训练模型......
阅读全文
摘要:变量.grad_fn表明该变量是怎么来的,用于指导反向传播。例如loss = a+b,则loss.gard_fn为<AddBackward0 at 0x7f2c90393748>,表明loss是由相加得来的,这个grad_fn可指导怎么求a和b的导数。 程序示例: import torch w1 =
阅读全文