![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch
Arthur-Ji
不要崇拜,不要自卑
不要盲目相信高势能
不要随波逐流
脚踏实地
展开
-
pytorch loss function 总结
最近看了下 PyTorch 的损失函数文档,整理了下自己的理解,重新格式化了公式如下,以便以后查阅。值得注意的是,很多的 loss 函数都有 size_average 和 reduce 两个布尔类型的参数,需要解释一下。因为一般损失函数都是直接...转载 2020-06-22 17:32:54 · 518 阅读 · 0 评论 -
HDF5 简介
文章目录一、简介二、HDF5 Files1、文件对象 f 的属性和方法:2、文件读写三、Datasets1、创建数据集:`f....转载 2020-06-19 22:34:04 · 812 阅读 · 0 评论 -
PIL.Image和np.ndarray图片与Tensor之间的转换
为了方便进行数据的操作,pytorch团队提供了一个torchvision.transforms包,我们可以用transforms进行以下操作:PIL.Image/numpy.ndarray与Tensor的相互转化;transforms....转载 2020-06-19 22:29:26 · 1617 阅读 · 0 评论 -
PyTorch中 tensor.detach() 和 tensor.data 的区别
PyTorch0.4中,.data 仍保留,但建议使用 .detach(), 区别在于 .data 返回和 x 的相同数据 tensor, 但不会加入到x的计算历史里,且require s_grad = False, 这样有些时候是不安全的, 因...转载 2020-06-19 21:57:44 · 316 阅读 · 0 评论 -
Pytorch: tensor.expand_as()
把一个tensor变成和函数括号内一样形状的tensor,用法与expand()类似>>> x = torch.tensor([[1], [2], [3]])>>> x.size()torch.Size([3, 1])>>> x.expand(3, 4)tensor([[ 1, 1, 1, 1], [ 2, 2, 2, 2], ...转载 2020-06-18 13:43:20 · 164 阅读 · 0 评论 -
Pytorch之深入torchvision.transforms.ToTensor与ToPILImage
目录torchvision.transforms.ToTensortorchvision.transforms.ToPILImage torchvision.transforms.ToTensor对于一个图片img,调用ToTensor转化成张量的形式,发生的不是将图片的RGB三维信道矩阵变成tensor图片在内存中以bytes的形式存储,转化过程的步骤是:img.tobytes() ...转载 2020-06-01 22:33:13 · 557 阅读 · 1 评论 -
Pytorch Exception in Thread: ValueError: signal number 32 out of range(GFN代码里面遇到的错误,hdf5相关)
https://stackoom.com/question/3be0z/%E7%BA%BF%E7%A8%8B%E4%B8%AD%E7%9A%84Pytorch%E5%BC%82%E5%B8%B8-ValueError-%E4%BF%A1%E5%8F%B7%E7%BC%96%E5%8F%B7-%E8%B6%85%E5%87%BA%E8%8C%83%E5%9B%B4===============>>#1 票数:1我遇到了类似的问题,当我设置时它得到解决:num_workers=0======原创 2020-05-18 15:40:43 · 2022 阅读 · 0 评论 -
torch.log函数 PSNR
torch.log(torch.Tensor([1]) 结果:0,任何数的0次方,为1torch.log是以自然数e为底的指数函数。torch.log(torch.Tensor([2.7])=0.999 当想要以10为底求PSNR的时候,可以使用psnr = 10*torch.log( MAX_DIFF**2 / loss ) / np.log(10)...原创 2020-05-10 11:00:57 · 3189 阅读 · 0 评论 -
pytorch梯度裁剪(Clipping Gradient):torch.nn.utils.clip_grad_norm
?1torch.nn.utils.clip_grad_norm(parameters, max_norm, norm_type=2)1、梯度裁剪原理(http://blog.csdn.net/qq_29340857/article/details/70574528) 既然在BP过程中会产生梯度消失/爆炸(就是偏导无限接近0,导致长时记忆无法更新),那么最简单粗暴的方法,设定阈值,当梯度小于/大于阈值时,更新的梯度为阈值,如下图所示: 优点:简单粗暴 缺点:很难找到满意的...转载 2020-05-09 14:48:14 · 3540 阅读 · 1 评论 -
Pytorch中named_children()和named_modules()的区别
从定义上讲:named_children( )返回包含子模块的迭代器,同时产生模块的名称以及模块本身。named_modules( )返回网络中所有模块的迭代器,同时产生模块的名称以及模块本身。二者返回的都是模型的迭代器,只不过一个返回的是子模块的迭代器,另一个返回的是所有模块的迭代器。写个程序测试一下:import torchimport torch.nn as nn class TestMod...转载 2020-05-09 14:07:16 · 872 阅读 · 0 评论 -
pytorch: tensor类型的构建与相互转换
Summary主要包括以下三种途径:使用独立的函数;使用torch.type()函数;使用type_as(tesnor)将张...转载 2020-04-23 20:56:48 · 383 阅读 · 0 评论 -
Pytorch交叉熵损失函数CrossEntropyLoss报错解决办法
在pytorch的官方论坛里有一个人也遇到了同样的问题,他把nn.CrossEntropyLoss()换成了nn.MultiLabelSoftMarginLoss()就不再报错了。但是经过实验发现,这个损失函数的效果非常差,远不如MSELoss。最终,我找到了一篇运用交叉熵损失函数的多分类代码一步步检查发现了报错的原因:在多分类问题中,当损失函数为nn.CrossEntropyLoss()时,它...转载 2020-04-23 20:55:08 · 2485 阅读 · 2 评论 -
线程中的Pytorch异常:ValueError:信号编号32超出范围
我收到此错误: Exception in Thread: ValueError: signal number 32 out of range dataiter = iter(trainloader) 完整的错误回溯是: Exception in thread Thread-5:Traceback (most recent call las...原创 2020-04-19 23:16:15 · 5045 阅读 · 8 评论 -
pytorch手动实现滑动窗口操作,论fold和unfold函数的使用
在卷积网络中,经常会需要用...转载 2020-02-26 21:25:14 · 1882 阅读 · 0 评论 -
Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution
目录 写在前面 Convolution VS Group Convolution Group Convolution的用途 参考 博客:blog.shinelee.me | 博客园 | CSDN写在前面Group Convolution分组卷积,最早见于...转载 2020-02-25 22:00:11 · 149 阅读 · 0 评论 -
torch.nn.functional.conv2d 函数详解
形式:torch.nn.functional.conv2d(input,filters,bias,stride,padding,dilation,groups)返回值:一个Tensor变量作用:在输入图像input中使用filters做卷积运算参数的具体意义:input代表输入图像的大小(miniba...转载 2020-02-25 21:44:31 · 2282 阅读 · 0 评论 -
nn.ReflectionPad2d()
ReflectionPad2d() 类似于一种 镜像填充 说说公式,及属性 具体官方文档很详细 不过不够通俗= = 官方文档上 是这个 表示第一眼 有点不理解...转载 2020-02-25 19:02:51 · 453 阅读 · 1 评论 -
pytorch 自定义卷积核进行卷积操作
一 卷积操作:在pytorch搭建起网络时,大家通常都使用已有的框架进行训练,在网络中使用最多就是卷积操作,最熟悉不过的就是torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, gro...转载 2020-02-25 18:57:20 · 2738 阅读 · 0 评论 -
pytorch 自定义核进行卷积操作
1.介绍 高斯滤波的用处很多,也有很多现成的包可以被调用,比如opencv里面的cv2.GaussianBlur,一般情况,我们是没必要去造轮子,除非遇到特殊情况,比如我们在使用pytorch的过程中,需要自定义高斯核进行卷积操作,假设,我们要用的高斯核的参数是以下数目:0.00...转载 2020-02-25 15:58:48 · 1676 阅读 · 0 评论 -
torch.bmm()函数解读
函数作用计算两个tensor的矩阵乘法,torch.bmm(a,b),tensor a 的size为(b,h,w),tensor b...转载 2020-02-11 16:39:26 · 1066 阅读 · 0 评论 -
Pythorch中的ReflectionPad2d与直接指定conv层中padding扩充的区别是?
沐阿羞工科学生15 人赞同了该回答已解决!以下是自己的笔记!增加边界的类型有以下4个类型:以一行图像数据为例,abcdefgh是原图数据,|是图像边界,为原图加边Ø aaaaaa|abcdefgh|hhhhhhh 重复Ø fedcba|abcdefgh|hgfedcb 反射Ø gfedcb|abcdefgh|gfedcba 反射101,相当于上一行的左右互换Ø cdefgh|abcdefgh|ab...转载 2020-02-11 16:18:45 · 1181 阅读 · 1 评论 -
nn.ReflectionPad2d()
ReflectionPad2d() 类似于一种 镜像填充 说说公式,及属性 具体官方文档很详细 不过不够通俗= = 官方文档上 是这个 表示第一眼 有点不理解...转载 2020-02-11 16:15:02 · 305 阅读 · 0 评论 -
pytorch中的Variable()
参考链接:https://www.cnblogs.com/hellcat/p/8439055.html函数简介torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现(tensor变成variable之后才能进行反向传播求梯度?用变量.ba...转载 2020-02-11 15:59:40 · 811 阅读 · 0 评论 -
PyTorch学习系列(一)——加载数据2
生成batch数据现在有了由数据文件生成的结构数据MyDataset,那么怎么在训练时提供batch数据呢?PyTorch提供了生成...转载 2020-02-11 11:43:16 · 279 阅读 · 0 评论 -
Pytorch(0)降低学习率torch.optim.lr_scheduler.ReduceLROnPlateau类
当网络的评价指标不在提升的时候,可以通过降低网络的学习率来提高网络性能。所使用的类class torch.optim.lr_sche...转载 2020-02-08 21:20:52 · 556 阅读 · 1 评论 -
pytorch 中 torch.optim.Adam 方法的使用和参数的解释
class torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)[source]实现Adam算法。它在Adam: A Method for Stochastic Optimization中被提出。...转载 2020-02-08 21:08:51 · 18511 阅读 · 0 评论 -
pytorch中squeeze()和unsqueeze()函数介绍
一、unsqueeze()函数1. 首先初始化一个a可以看出a的维度为(2,3)2. 在第二维增加一个维度,使其维度变为(2,1,3)可以看出a的维度已经变为(2,1,3)了,同样如果需要在倒数第二个维度上增加一个维度,那么使用b.unsqueeze(-2)二、squeeze()函数介绍1. ...转载 2020-02-07 16:58:24 · 302 阅读 · 0 评论 -
pytorch .detach() .detach_() 和 .data用于切断反向传播
参考:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-autograd/#detachsource当我们再训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整;或者值训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一些分支的反向传播...转载 2020-02-07 16:54:44 · 359 阅读 · 0 评论 -
训练神经网络不得不看的33个技巧
据说开始训练神经网络很容易,许多库和框架都以可以用30行的奇迹代码片段解决你的数据问题而自豪,给人一种即插即用的(错误)印象。常见的做法是:123 copy>>> your_data = # plug your awesome dataset here>>> model = SuperCrossValidator(SuperDuper.fit, your_da...转载 2020-01-08 15:32:42 · 866 阅读 · 0 评论 -
PyTorch中Variable变量
一、了解Variable顾名思义,Variable就是 变量 的意思。实质上也就是可以变化的量,区别于int变量,它是一种可以变化...转载 2019-12-13 12:44:24 · 168 阅读 · 1 评论 -
pytorch 中的Variable
tensor是PyTorch中的完美组件,但是构建神经网络还远远不够,我们需要能够构建计算图的tensor,这就是Variable。Variable是对tensor的封装,操作和tensor是一样的,但是每个Variable都有三个属性,Variable中的tensor本身.data,对应tensor的梯度....转载 2019-12-13 12:42:27 · 142 阅读 · 0 评论 -
PyTorch的自适应池化Adaptive Pooling
相信大家最近被hinton的这篇capsule的论文刷屏了,这篇论文是发表在nips2017上的。其实capsule这个概念最早是h...转载 2019-12-12 21:20:53 · 1678 阅读 · 0 评论 -
上采样和PixelShuffle
去年曾经使用过FCN(全卷积神经网络)及其派生Unet,再加上在爱奇艺的时候做过一些超分辨率重建的内容,其中用到了毕业于帝国理工的华...转载 2019-12-12 22:07:34 · 472 阅读 · 1 评论 -
pytorch 冻结某些层参数不训练
上一篇迁移学习的文章下,有朋友问在fine-tune的时候如何固定某些层不参与训练,下去研究并实验了一下,在这儿总结一下:pytorch中关于网络的反向传播操作是基于Variable对象,Variable中有一个参数requires_grad,将requires_grad=False,网络就不会对该层计算梯度。在用户手动定义Variable时,参数requires_grad默认值是False。而在...转载 2019-12-11 15:48:00 · 6739 阅读 · 2 评论 -
Pytorch 中model.zero_grad 和optimizer.zero_grad等效
实际上当optimizer使用optim.Optimzer进行定义后,那么在模型训练过程中model.zero_grad()和optimzier.zero_grad()两者是等效的,当然我更加推荐使用前者,因为更好理解一些。if optimizer = optim.Optimizer(net.pa...转载 2019-12-10 21:56:36 · 254 阅读 · 0 评论 -
pytorch的计算图 loss.backward(retain_graph=True) # 添加retain_graph=True标识,让计算图不被立即释放
前言:接触pytorch这几个月来,一开始就对计算图的奥妙模糊不清,不知道其内部如何传播。这几天有点时间,就去翻阅了Github,pytorch Forum,还有很多个人博客(后面会给出链接),再加上自己的原本一些见解,现在对它的计算图有了更深层次的理解。pytorch是非常好用和容易上手的深度学习框架,因为它所构建的是动态图,极大的方便了coding and debug。可是对于初学者而言,计算...转载 2019-12-09 18:50:52 · 8491 阅读 · 2 评论 -
Pytorch optimizer.step() 和loss.backward()和scheduler.step()的关系与区别 (Pytorch 代码讲解)
因为有人问我optimizer的step为什么不能放在min-batch那个循环之外,还有optimizer.step和loss.backward的区别;那么我想把答案记录下来。首先需要明确optimzier优化器的作用, 形象地来说,优化器就是需要根据网络反向传播的梯度信息来更新网络的参数,以起到降低lo...转载 2019-12-09 18:48:28 · 301 阅读 · 0 评论 -
Tensor与numpy相互转换: torch.ones(),torch.add(),torch.zeros(),torch.squeeze()
目录 Tensor与numpy相互转换:torch.ones(),torch.add(),torch.zeros(),torch.squeeze()Tensor与numpy相互转换:import torchx=torch.Tensor(2,3)#生成一个4*5的Tensor张量 将Tens...转载 2019-12-07 15:50:10 · 987 阅读 · 0 评论 -
PyTorch中的contiguous
PyTorch中的contiguous栩风码农265 人赞同了该文章本文讲解了pytorch中contiguous的含义、定义、实现,以及contiguous存在的原因,非contiguous时的解决办法。并对比了numpy中的contiguous。contiguous 本身是形容词,表示连续的,关于 contiguous,PyTorch 提供了is_contiguous、contiguous(形...转载 2019-12-07 15:26:57 · 927 阅读 · 1 评论 -
pytorch手动实现滑动窗口操作,论fold和unfold函数的使用
在卷积网络中,经常会需要用到卷积核滑动窗口的操作,如下图所示。这个操作在大多数的深度学习框架中,都被封装的很好,以至于我们并不需要显式...转载 2019-12-07 15:03:05 · 564 阅读 · 0 评论