
PyTorch
sooner高
DeepFaceLab作者, Tensorflow & PyTorch contributor,深度学习小学生
展开
-
PyTorch学习笔记(20) ——激活函数
0. 前言本博客内容翻译自纽约大学数据科学中心在2020发布的《Deep Learning》课程的Activation Functions and Loss Functions部分.废话不多说,下面直接开始吧 ^ . ^1. 激活函数本内容将回顾一些重要的激活函数以及其在PyTorch中的实现,它们来自各种各样的论文,并在一些任务上有着优异的表现~ReLU torch.nn.ReLU(...翻译 2020-05-02 12:44:23 · 17837 阅读 · 0 评论 -
PyTorch学习笔记(18) ——基于pytorch 1.1.0编写cuda扩展
0. 前言对于一些特殊的算子, 我们需要进行定制其前向和反向的过程, 从而使得其能够获得更快的速度, 加速模型的训练. 这样, 我们自然会想到使用PyTorch的cuda扩展来实现, 这里, 我将以一个简单且易于理解的例子出发, 详细的介绍如何构造一个属于你的cuda扩展.1. 为什么需要写cuda扩展?由于我们的一些特殊结构可以由基础的pytorch提供的算子进行组合而形成, 但是, 其问...原创 2020-02-20 12:23:10 · 5250 阅读 · 6 评论 -
PyTorch学习笔记(17) ——pytorch的torch.repeat和tf.tile的对比
0. 前言在对比stylegan2的D_stylegan2的时候, 我需要校对我的Minibatch_stddev_layer和作者的tf版本的区别,其中,有一个算子f.tile, 网上已经介绍的很清楚了,将其翻译为pytorch版本的时候其对应的算子没有清晰的解释,因此我将torch.repeat和tf.tile进行了简单比较(下面),基本结论是2者是一致的,可以等效替换.1. 测试比较①...原创 2019-12-29 19:30:24 · 9517 阅读 · 0 评论 -
PyTorch学习笔记(12)——PyTorch中的Autograd机制介绍
在《PyTorch学习笔记(11)——论nn.Conv2d中的反向传播实现过程》[1]中,谈到了Autograd在nn.Conv2d的权值更新中起到的用处。今天将以官方的说明为基础,补充说明一下关于计算图、Autograd机制、Symbol2Symbol等内容。0. 提出问题不知道大家在使用PyTorch的时候是否有过“为什么在每次迭代(iteration)的时候,optimizer都要清...原创 2018-10-13 09:35:00 · 8738 阅读 · 0 评论 -
PyTorch学习笔记(13)——强力的可视化工具visdom
今天,让我们来放松一下大脑,学习点轻松的东西————可视化工具Visdom,它可以让我们在使用PyTorch训练模型的时候,可视化中间的训练情况,无论是loss变化还是中间结果比较。相比干呆呆的瞪着命令行,Visdom让我们的调参之路变得更加生动和活泼了.~0. 前言对于一些任务,尤其是难以收敛以及情况复杂的,如果在训练过程中,实时可视化训练情况,将会让我们对训练手段进行及时调整,更好的达...原创 2018-11-27 18:47:24 · 5966 阅读 · 0 评论 -
PyTorch学习笔记(14) ——PyTorch 1.0 的C++ FrontEnd初体验
在去年12月份,我尝试了一下PyTorch 1.0的C++前端, 当时官方负责PyTorch的C++前端的老哥是: Peter Goldsborough, 当时的C++前端还不够稳定,官方文档提供的demo无法跑通.所以为了避免后面的同学再次入坑. 本部分将会手把手教你如何用PyTorch1.0 跑通C++ Mnist模型的训练~0. PyTorch C++接口哲学PyTorch’s ...原创 2019-02-28 10:30:41 · 2379 阅读 · 5 评论 -
2017 如何训练一个GAN网络
GAN, 作为一种非常厉害的生成模型, 在近年来得到了广泛的应用. Soumith, PyTorch之父, 毕业于纽约大学的Facebook的VP, 在2015年发明了DCGAN: Deep Convolutional GAN. 它显式的使用卷积和转置卷积在判别器和生成器中使用. 他对GAN的理解相对深入, 特地总结了关于训练GAN的一些技巧和方式, 因为不同于一般任务, 像设置优化器, 计算l...翻译 2019-04-08 22:26:56 · 4936 阅读 · 0 评论 -
PyTorch学习笔记(15) ——PyTorch中的contiguous
本文转载自栩风在知乎上的文章《PyTorch中的contiguous》。我觉得很好,特此转载。0. 前言本文讲解了pytorch中contiguous的含义、定义、实现,以及contiguous存在的原因,非contiguous时的解决办法。并对比了numpy中的contiguous。contiguous 本身是形容词,表示连续的,关于 contiguous,PyTorch 提供了is...转载 2019-05-21 23:30:20 · 6989 阅读 · 2 评论 -
PyTorch学习笔记(16)——编写你自己的PyTorch kernel(基于PyTorch1.2.0)
在前一阵看过PyTorch官方核心开发者Edward Z, Yang的在纽约举办的PyTorch NYC Meetup的关于PyTorch内部机制的讲解。从通过strides指定逻辑布局,tensor wrapper到autograd机制以及对PyTorch内部最重要的几个基本代码模块的扼要说明,让人受益匪浅。其中,在PyTorch写kernel是一个非常让人兴奋的内容,作为一个contribu...原创 2019-06-25 14:55:15 · 5371 阅读 · 0 评论 -
PyTorch学习笔记(11)——论nn.Conv2d中的反向传播实现过程
0. 前言众所周知,反向传播(back propagation)算法 (Rumelhart et al., 1986c),经常简称为backprop,它允许来自代价函数的信息通过网络向后流动,以便计算梯度。它是神经网络之所以可以进行学习的最根本因素。在如PyTorch、Tensorflow等深度学习框架中,都广泛的使用了自动微分(Autograd)的机制,主要也就是从哈佛的智能概率系统组(Har...原创 2018-10-12 12:36:57 · 8161 阅读 · 8 评论 -
PyTorch学习笔记(10)——上采样和PixelShuffle
去年曾经使用过FCN(全卷积神经网络)及其派生Unet,再加上在爱奇艺的时候做过一些超分辨率重建的内容,其中用到了毕业于帝国理工的华人博士Shi Wenzhe(在Twitter任职)发表的PixelShuffle《Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional...原创 2018-09-27 10:28:20 · 119898 阅读 · 23 评论 -
PyTorch学习笔记(1)——requires_grad和autograd.no_grad
前言 鉴于caffe2和pytorch要合并的消息,再加之pytorch实现模型的开发效率优势,虽然PyTorch版本预计还有一段时间才能面试,不过现在可以基于PyTorch0.4.0版本进行学习。本系列主要记载一些常见的PyTorch问题和功能,并不是对PyTorch教程的全篇实现,有需要的朋友可以自行学习PyTorch官方文档 ① requires_gradTensor变...原创 2018-06-28 12:40:16 · 49213 阅读 · 0 评论 -
PyTorch学习笔记(3)—CPU和GPU上加载模型
前言 有一些现实的问题是这样的:当我们在GPU集群或者服务器上训练模型的时候,有时候需要将模型取回,在本地测试一下。这个时候就需要PyTorch将模型转换为cpu的版本,因为PyTorch针对不同的系统和cuda有不同的版本。因此无法直接将GPU训练出的模型直接用于CPU来做inference,需要进行一些简单的变化。转换(转自牧野 ——pytorch在CPU和GPU上加载模型)...转载 2018-07-04 11:08:48 · 3570 阅读 · 0 评论 -
PyTorch学习笔记(4)——自定义Loss Function(自动打印每次的梯度)
在stackoverflow上看到一个名叫Ismail_Elezi的老铁问了个自定义Loss Function的问题,它的问题在于:1)反向传播报错 2)矩阵算法使用不行 3)算法数值稳定性不行。 我决定在这个例子的基础上(它应该不是torch 0.4.0的新版本,因为看他的变量还是用Variable格式),对自定义的Loss Function进行说明基于新版本(torch 0.4.0)是如...原创 2018-07-19 16:34:02 · 11783 阅读 · 0 评论 -
PyTorch学习笔记(5)——论一个torch.Tensor是如何构建完成的?
最近在准备学习PyTorch源代码,在看到网上的一些博文和分析后,发现他们发的PyTorch的Tensor源码剖析基本上是0.4.0版本以前的。比如说:在0.4.0版本中,你是无法找到a = torch.FloatTensor()中FloatTensor的usage的,只能找到a = torch.FloatStorage()。这是因为在PyTorch中,将基本的底层THTensor.h TH...原创 2018-07-27 13:25:38 · 6784 阅读 · 3 评论 -
PyTorch学习笔记(6)——DataLoader源代码剖析
这两天把DataLoader的源代码的主要内容进行了一些分析,基于版本0.4.1。当然,因为内容比较多,没有全部展开,这里的主要内容是DataLoader关于数据加载以及分析PyTorch是如何通过Python本身的multiprocessing和Threading等库来保证batch是顺序取出的。额外的内容都会给出链接,在这里不会详细展开。0.前言(楔子)本篇关于DataLoad...原创 2018-08-08 14:40:31 · 55216 阅读 · 17 评论 -
PyTorch学习笔记(7)——多重派发
本文主体内容转载自罗秀哲——PyTorch源码浅析(五),因为我的C语言不熟悉,所以本篇大体还是借鉴于罗神的文章。不过相比罗身,我比较侥幸成为了PyTorch官方的contributor,一共也没改多少代码…,可能对罗神对PyTorch改动太多,没人有时间review吧。多重派发首先我们需要了解什么是多重派发,详细的内容可以参考这个wiki:Multiple dispatch,具体...原创 2018-08-16 15:10:59 · 1520 阅读 · 0 评论 -
PyTorch学习笔记(8)——PyTorch之随机数生成
0.前言(基于Torch0.4.1) 相信在使用PyTorch的时候,大家都用过torch.randperm等随机数生成的接口,今天就来分析一下在PyTorch中使用的随机数生成及其背后蕴含的算法原理。1. 定位源码首先,需要定位随机数生成的代码,经过查找,随机数生成的代码位于pytorch/aten/src/TH/下面的THRandom.h和THRandom.cpp。...原创 2018-09-02 12:36:09 · 6982 阅读 · 0 评论 -
PyTorch学习笔记(9)——nn.Conv2d和其中的padding策略
一. Caffe、Tensorflow的padding策略在之前的转载过的一篇文章——《tensorflow ckpt文件转caffemodel时遇到的坑》提到过,caffe的padding方式和tensorflow的padding方式有很大的区别,输出无法对齐。这是为什么呢?下面简单回顾一下:卷积操作输出的形状计算公式是这样的:output_shape = (image_shap...原创 2018-09-12 18:06:48 · 167025 阅读 · 32 评论 -
PyTorch学习笔记(2)——变量类型(cpu/gpu)
前言 PyTorch中的数据类型为Tensor,Tensor与Numpy中的ndarray类似,同样可以用于标量,向量,矩阵乃至更高维度上面的计算。PyTorch中的tensor又包括CPU上的数据类型和GPU上的数据类型,一般GPU上的Tensor是CPU上的Tensor加cuda()函数得到。通过使用Type函数可以查看变量类型。系统默认的torch.Tensor是torch.Floa...原创 2018-07-03 12:44:27 · 38836 阅读 · 3 评论