pytorch学习笔记
文章平均质量分 86
pytorch交流群613523596
u012436149
这个作者很懒,什么都没留下…
展开
-
pytorch 学习笔记(二十二):关于 inplace operation
原文发表在 知乎上 在这里就做一下同步吧。 (本文章适用于 pytorch0.4.0 版本, 既然 Variable 和 Tensor merge 到一块了, 那就叫 Tensor吧)在编写 pytorch 代码的时候, 如果模型很复杂, 代码写的很随意, 那么很有可能就会碰到由 inplace operation 导致的问题. 所以本文将对 pytorch 的 inplace operat...原创 2018-06-26 18:58:54 · 14664 阅读 · 3 评论 -
pytorch学习笔记(二十一): 使用 pack_padded_sequence
在使用 pytorch 的 RNN 模块的时候, 有时会不可避免的使用到 pack_padded_sequence 和 pad_packed_sequence, 当使用双向RNN的时候, 必须要使用 pack_padded_sequence !! .否则的话, pytorch 是无法获得 序列的长度, 这样也无法正确的计算双向 RNN/GRU/LSTM 的结果.但是在使用 pack_padd...原创 2018-03-29 21:20:40 · 24206 阅读 · 6 评论 -
pytorch学习笔记(二十): ignite (写更少的代码训练模型)
此图片已过期, 2018.04.04版本, 已经没有 Trainer 和 Evaluator 类, 就只剩下一个 Engine 类最近自己想写一个高级一点的抽象来更方便的训练 pytorch 网络, 无意间发现, pytorch 用户下面有个 ignite repo, 好奇就看了一下这是个什么东西. 原来是 pytorch 已经提供了一个高级抽象库来训练 pytorch模型了, 既然有了轮...原创 2018-03-16 23:42:34 · 11695 阅读 · 6 评论 -
pytorch学习笔记(十九):torchtext
文章部分翻译自 http://anie.me/On-Torchtext/ API一览torchtext.datatorchtext.data.Example : 用来表示一个样本,数据+标签torchtext.vocab.Vocab: 词汇表相关torchtext.data.Datasets: 数据集类,__getitem__ 返回 Example实例torchtext...原创 2018-02-11 13:47:04 · 51314 阅读 · 31 评论 -
pytorch学习笔记(十八):C 语言扩展 pytorch
上篇博文已经介绍了如何通过 继承 Function ,然后使用python 来扩展 pytorch, 本文主要介绍如何通过 cffi 来扩展 pytorch 。官网给出了一个 MyAdd 的 Demo github地址,本文通过 这个 Demo 来搞定如何 通过 cffi 来扩展 pytorch。从github上clone下来代码,目录结构是这样的package:script:(这个部分的示例原创 2017-12-20 11:22:11 · 5623 阅读 · 2 评论 -
pytorch学习笔记(十七):python 端扩展 pytorch
pytorch 虽然提供了很多的 op 使得我们很容易的使用。但是当已有的 op 无法满足我们的要求的时候,那就需要自己动手来扩展。 pytorch 提供了两种方式来扩展 pytorch 的基础功能。 通过继承 autograd.Function通过 C 来扩展本篇博客主要介绍 继承 autograd.Function 来扩展 pytorch。官方文档链接继承 autograd.Functio原创 2017-12-18 02:56:07 · 12652 阅读 · 4 评论 -
pytorch学习笔记(十六):pytorch 写代码时应该注意
当网络中有 dropout,bn 的时候。训练的要记得 net.train(), 测试 要记得 net.eval()在测试的时候 创建输入 Variable 的时候 要记得 volatile=Truetorch.sum(Tensor), torch.mean(Tensor) 返回的是 python 浮点数,不是 Tensor。在不需要 bp 的地方用 Tensor 运算。原创 2017-11-24 13:14:08 · 4842 阅读 · 0 评论 -
pytorch学习笔记(十五):pytorch 源码编译碰到的坑总结
2017.11.17最近打算学习一下 pytorch 源码,所以按照官网的教程从头编译了一下 pytorch 。在编译的过程中,碰到了两个坑,在这里记录一下。第一个错误CMakeFiles/Makefile2:264: recipe for target 'src/ATen/test/CMakeFiles/scalar_test.dir/all' failedmake[1]: *** [src原创 2017-11-17 09:10:19 · 16434 阅读 · 1 评论 -
pytorch学习笔记(十四): DataLoader源码阅读
pytorch 数据加载部分的 接口可以说是现存 深度学习框架中设计的最好的, 给了我们足够的灵活性。本博文就对 pytorch 的多线程加载 模块(DataLoader) 进行源码上的注释。输入流水线pytorch 的输入流水线的操作顺序是这样的:创建一个 Dataset 对象创建一个 DataLoader 对象不停的 循环 这个 DataLoader 对象 d...原创 2017-11-15 22:18:59 · 30099 阅读 · 6 评论 -
pytorch学习笔记(十三):backward过程的底层实现解析
博主水平有限,如有错误,请不吝指出。pytorch源码注释,欢迎 pr,提 issue 和 star当我们使用 pytorch 的 python 的接口编写代码的时候,感觉是十分清爽的,不需要考虑底层的实现。但是好奇心驱使我们 想一探究竟,看看底层 C/C++ 那部分到底做了什么。本篇文章主要专注于:pytorch 是如何动态构建反向传导图的pytorch 的反向传导是怎么操作...原创 2017-11-12 12:05:53 · 10436 阅读 · 3 评论 -
pytorch学习笔记(十二):详解 Module 类
pytorch: ModuleModule 是 pytorch 提供的一个基类,每次我们要 搭建 自己的神经网络的时候都要继承这个类,继承这个类会使得我们 搭建网络的过程变得异常简单。本文主要关注 Module 类的内部是怎么样的。初始化方法中做了什么def __init__(self): self._backend = thnn_backend self._parameters =原创 2017-10-19 10:35:02 · 37185 阅读 · 6 评论 -
pytorch学习笔记(十一):fine-tune 预训练的模型
pytorch : fine-tune torchvision 中预训练的模型torchvision 中包含了很多预训练好的模型,这样就使得 fine-tune 非常容易。本文主要介绍如何 fine-tune torchvision 中预训练好的模型。安装pip install torchvision如何 fine-tune以 resnet18 为例:from torchvision import原创 2017-09-20 10:42:59 · 33424 阅读 · 12 评论 -
pytorch: 如何优雅的将 int list 转成 one-hot形式
虽然 pytorch 已经升级到 0.2.0 了,但是,貌似依旧没有简单的 api 来帮助我们快速将 int list 转成 one-hot。那么,如何优雅的实现 one-hot 代码呢?def one_hot(ids, out_tensor): if not isinstance(ids, (list, np.ndarray)): raise ValueError("ids原创 2017-08-09 22:23:50 · 14658 阅读 · 1 评论 -
pytorch: 常见bug与debug
本博文用来记录自己的 pytorch 踩坑过程,虽然 pytorch 命令式编程,声称容易 debug,可是 代码给出的错误提示可是令人相当头疼,所以在本文中记录一下在编写 pytorch 代码过程中碰到的 坑,和如何 填坑。TypeError: ××× received an invalid combination of arguments 如果检查过了数据类型的正确性之后(float32,原创 2017-08-09 19:33:26 · 8757 阅读 · 0 评论 -
pytorch: Variable detach 与 detach_
pytorch 的 Variable 对象中有两个方法,detach和 detach_ 本文主要介绍这两个方法的效果和 能用这两个方法干什么。detach官方文档中,对这个方法是这么介绍的。返回一个新的 从当前图中分离的 Variable。返回的 Variable 永远不会需要梯度如果 被 detach 的Variable volatile=True, 那么 detach 出来...原创 2017-08-05 12:57:55 · 33112 阅读 · 12 评论 -
pytorch学习笔记(十):learning rate decay(学习率衰减)
pytorch learning rate decay本文主要是介绍在pytorch中如何使用learning rate decay. 先上代码:def adjust_learning_rate(optimizer, epoch): """ 每50个epoch,权重以0.99的速率衰减 """ if epoch // 50 == 0: lr = ar原创 2017-04-24 22:06:45 · 32303 阅读 · 5 评论 -
pytorch学习笔记(九):PyTorch结构介绍
PyTorch结构介绍对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握。水平有限,如有错误,欢迎指错,谢谢!几个重要的类型和数值相关的TensorVariableParameterbuffer(这个其实不能叫做类型,其实他就是用来保存tensor的)Tensor: PyTorch中的计算基本都是基于Tensor的,可以说是PyTor原创 2017-04-12 17:45:15 · 22479 阅读 · 7 评论 -
pytorch学习笔记(八):PytTorch可视化工具 visdom
Visdom PyTorch可视化工具本文翻译的时候把 略去了 Torch部分。项目地址一个灵活的可视化工具,可用来对于 实时,富数据的 创建,组织和共享。支持Torch和Numpy。总览基本概念Setup启动可视化接口总结总览Visdom目的是促进远程数据的可视化,重点是支持科学实验。。向您和您的合作者发送可视化 图像,图片和文本。通过编程组织您的可视化空间,或者通过UI为实时数据创翻译 2017-04-06 14:52:08 · 50186 阅读 · 4 评论 -
pytorch学习笔记(七):pytorch hook 和 关于pytorch backward过程的理解
水平有限,如有错误,请不吝指正,谢谢!pytorch 的 hook 机制在看pytorch官方文档的时候,发现在nn.Module部分和Variable部分均有hook的身影。感到很神奇,因为在使用tensorflow的时候没有碰到过这个词。所以打算一探究竟。nn.Module的hookregister_forward_hook(hook)在module上注册一个forward hook。 每次调原创 2017-04-05 11:25:28 · 28816 阅读 · 5 评论 -
pytorch学习笔记(六):自定义Datasets
自定义Datasets什么是Datasets:在输入流水线中,我们看到准备数据的接口是这么写的data = datasets.CIFAR10("./data/", transform=transform, train=True, download=True)。datasets.CIFAR10即使一个Datasets类,data是这个类的一个实例。为什么要定义Datasets:PyTorch提供了一个原创 2017-04-04 13:31:03 · 36670 阅读 · 0 评论 -
pytorch学习笔记(五):保存和加载模型
# 保存和加载整个模型torch.save(model_object, 'model.pkl')model = torch.load('model.pkl')# 仅保存和加载模型参数(推荐使用)torch.save(model_object.state_dict(), 'params.pkl')model_object.load_state_dict(torch.load('par...原创 2017-04-01 23:21:08 · 119630 阅读 · 8 评论 -
pytorch学习笔记(四):输入流水线(input pipeline)
pytorch input-pipelineinput-pipeline: 1. 图像预处理# 创建个transform用来处理图像数据transform = transforms.Compose([ transforms.Scale(40), transforms.RandomHorizontalFlip(), transforms.RandomCrop(32),翻译 2017-04-01 21:54:22 · 12188 阅读 · 0 评论 -
pytorch学习笔记(三):自动求导
本片博文主要是对http://pytorch.org/docs/notes/autograd.html的部分翻译以及自己的理解,如有错误,欢迎指正!Backward过程中排除子图pytorch的BP过程是由一个函数决定的,loss.backward(), 可以看到backward()函数里并没有传要求谁的梯度。那么我们可以大胆猜测,在BP的过程中,pytorch是将所有影响loss的Var...原创 2017-03-27 15:04:17 · 21116 阅读 · 4 评论 -
pytorch学习笔记(二):gradient
在BP的时候,pytorch是将Variable的梯度放在Variable对象中的,我们随时都可以使用Variable.grad得到对应Variable的grad。刚创建Variable的时候,它的grad属性是初始化为0.0的(0.2 版本已经是 打印的结果是 None。)。import torchfrom torch.autograd import Variablew1 = Varia...原创 2017-01-21 11:15:45 · 38176 阅读 · 12 评论 -
pytorch 学习笔记(一)
pytorch是一个动态的建图的工具。不像Tensorflow那样,先建图,然后通过feed和run重复执行建好的图。相对来说,pytorch具有更好的灵活性。编写一个深度网络需要关注的地方是: 1. 网络的参数应该由什么对象保存 2. 如何构建网络 3. 如何计算梯度和更新参数数据放在什么对象中pytorch中有两种变量类型,一个是Tensor,一个是Variable。(0...原创 2017-01-20 01:26:09 · 95397 阅读 · 11 评论