0

Pytorch(一)

 2 years ago
source link: http://antkillerfarm.github.io/ai/2018/01/16/pytorch.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Pytorch

Torch是一个非常老牌的DL框架,它的历史可以追溯至2003年,几乎是现存框架中最古老的了。

http://torch.ch/

Torch采用Lua语言编写,这和目前ML/DL界主流的python有较大差别。

因此,Facebook和Uber联合于2016年推出了Torch的python版本——Pytorch。由于Pytorch在开发者社区更受欢迎,短短时间它的开发进度就超越了Torch,成为了2017年DL的年度语言。

https://pytorch.org/

和TensorFlow主要面向工业界不同,Pytorch的抽象更为傻瓜,类似于Keras,但也提供了TensorFlow式的基本运算功能,更适合学术界的使用。当然了,它的效率和可扩展性,是不如TensorFlow的。

https://pytorch.org/docs/stable/index.html

官网教程:

http://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html

还有一个非官网的教程,一个韩国人写的:

https://github.com/yunjey/pytorch-tutorial

Model Zoo(非官方):

https://github.com/Cadene/pretrained-models.pytorch

官方书籍:

https://pytorch.org/deep-learning-with-pytorch-thank-you

Pytorch的安装方法在官网首页就可查到,非常方便。

https://pytorch.org/get-started/locally/

这是我的平台的安装方法:

pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-linux_x86_64.whl

pip3 install torchvision

import torch
torch.cuda.is_available()

https://zhuanlan.zhihu.com/p/44068797

Windows装TensorFlow+MXNet+PyTorch

Lenet+MNIST+GPU:

https://github.com/antkillerfarm/antkillerfarm_crazy/tree/master/python/ml/pytorch/mnist_gpu.py

https://github.com/CSAILVision/semantic-segmentation-pytorch

Semantic Segmentation PyTorch:PyTorch上最好的语义分割工具包

https://github.com/PetrochukM/PyTorch-NLP

支持快速成型的深度学习NLP工具包

fastai

fastai和Pytorch的关系,类似于Keras和Tensorflow。

https://mp.weixin.qq.com/s/kEC-5huq6cFjd1iPjSuK-g

5行代码秀碾压,比Keras还好用的fastai来了,尝鲜PyTorch 1.0必备伴侣

QNNPACK

QNNPACK (Quantized Neural Networks PACKage) 是 Marat Dukhan (Facebook) 开发的专门用于量化神经网络计算的加速库。其卓越的性能表现一经开源就击败了几乎全部已公开的加速算法,甚至直至今日(2019 年中)。

它已经集成到pytorch中。

https://github.com/pytorch/qnnpack

https://mp.weixin.qq.com/s/30cxIX9aKIpELC8H4_k8Gg

比TFLite快2倍!FB开源移动深度学习优化库QNNPACK

https://zhuanlan.zhihu.com/p/81026071

神经网络加速库QNNPACK实现揭秘

经常会看到后缀名为.pt,.pth,.pkl的pytorch模型文件,其实它们并不是在格式上有区别,只是后缀不同而已(仅此而已)。.pkl文件是python里面保存文件的一种二进制格式,用pickle库去加载pkl文件或pth文件,效果都是一样的。

https://www.jianshu.com/p/e37e4e49dbc1

pytorch模型保存方式(.pt, .pth, .pkl)

https://github.com/antkillerfarm/antkillerfarm_crazy/blob/master/python/ml/pytorch/pytorch_hook.py

上面的示例包含以下内容:

1.如何使用hook打印中间层的输出。

2.如何截取模型的一部分,并执行。

3.量化模型的输入和输出有一个Quantize和Dequantize的过程。而且这两个过程由于是后期加入的,因此在print(model)中被排在最后。可见model结构中的顺序,并不是真正的执行顺序的拓扑排序。

https://blog.csdn.net/Pl_Sun/article/details/106978171

PyTorch中的model.modules(), model.children(), model.named_children(), model.parameters(), model.nam…

https://www.jianshu.com/p/d2a066e05078

pytorch拆分已定义的网络结构(slicing network)

PyTorch的的代码主要由C10、ATen、torch三大部分组成的。其中:

  • C10,来自于Caffe Tensor Library的缩写。这里存放的都是最基础的Tensor库的代码,可以运行在服务端和移动端。PyTorch目前正在将代码从ATen/core目录下迁移到C10中。C10的代码有一些特殊性,体现在这里的代码除了服务端外还要运行在移动端,因此编译后的二进制文件大小也很关键,因此C10目前存放的都是最核心、精简的、基础的Tensor函数和接口。

  • ATen,来自于A TENsor library for C++11的缩写;PyTorch的C++ tensor library。ATen部分有大量的代码是来声明和定义Tensor运算相关的逻辑的,除此之外,PyTorch还使用了aten/src/ATen/gen.py来动态生成一些ATen相关的代码。

  • Torch,部分代码仍然在使用以前的快要进入历史博物馆的Torch开源项目。

CNN format

Pytorch默认支持NCHW格式的数据,这与Caffe相同。

Pytorch目前已经和Caffe2合并,所以相关op的代码在caffe2/operators下。一般XXX_op.h包含了CPU实现,而XXX_op.cu包含GPU实现。

Conv Backprop

caffe2/operators/conv_op_impl.h: ConvGradientOp::RunOnDeviceWithOrderNCHW
caffe2/utils/math.h: Gemm
caffe2/utils/math_cpu.cc: Gemm
Eigen or cblas_sgemm

// calc the cost of ConvGradient
caffe2/operators/conv_gradient_op.cc: CostInferenceForConvGradient
// cuDNN
cudnnGetConvolutionBackwardDataAlgorithm_v7

https://mp.weixin.qq.com/s/rCocDz2kW2tpkZel5Wh-hw

Pytorch网络结构可视化

https://mp.weixin.qq.com/s/0VNTBY1KrOXBldRoi1Ky5A

Pytorch autograd,backward详解

https://zhuanlan.zhihu.com/p/55966063

PyTorch ATen代码的动态生成

https://zhuanlan.zhihu.com/p/56924766

PyTorch Autograd代码的动态生成

tensorboardX

Pytorch并没有一个比较好的可视化库。所谓的torchvision实际上是一个用于CV领域的工具库,和可视化一点关系都没有。

而tensorboardX项目,提供了导出Pytorch模型到tensorboard的功能。这样,Pytorch项目也可以使用tensorboard作为可视化工具。

https://github.com/lanpa/tensorboardX

https://tensorboardx.readthedocs.io/en/latest/tensorboard.html

https://mp.weixin.qq.com/s/Zxoug2sMoWsOWnZPCQ22ug

PyTorch模型训练特征图可视化(TensorboardX)

torchinfo

torchinfo提供了类似TF的model.summary()的功能。

https://github.com/TylerYep/torchinfo

在torchinfo之前还有一个叫torch-summary的项目也提供了类似功能。而torchinfo正是它的后继者。

Torch Vision

https://github.com/pytorch/vision

pytorch支持scripting/trace两种模式动态图转静态图的方法。

https://blog.csdn.net/ljp1919/article/details/102514357

在生产环境中基于PyTorch的C++API运行模型-以图像分类为例

https://blog.csdn.net/xxradon/article/details/86504906

pytorch JIT浅解析

TorchServe

TorchServe是由AWS和Facebook合作开发的PyTorch模型服务库。

https://github.com/pytorch/serve

https://mp.weixin.qq.com/s/AtuSS5paEZ_0RvpyLEJk2g

Facebook联合AWS推出PyTorch模型服务框架:可让模型快速投入生产

https://zhuanlan.zhihu.com/p/362985275

Pytorch获取中间层输出的几种方法

https://zhuanlan.zhihu.com/p/267800207

PyTorch中Hook的简单使用

https://zhuanlan.zhihu.com/p/87853615

pytorch的hook机制之register_forward_hook

https://zhuanlan.zhihu.com/p/152314451

hook技术

https://mp.weixin.qq.com/s/zhkaenFdnB5KgaEYb-XDEQ

从基础概念到实现,小白如何快速入门PyTorch

https://mp.weixin.qq.com/s/AMZFvmzo4pQ1m7QeaRpAdA

PyTorch资源列表:450个NLP/CV/SP、论文实现、教程、示例

https://mp.weixin.qq.com/s/dzDkpUHo4CKqq8i1pyYO2w

60题PyTorch简易入门指南

https://mp.weixin.qq.com/s/7at6y2NcYaxGGN8syxlccA

PyTorch Cookbook

https://mp.weixin.qq.com/s/RKtyNpIxSxFNfOSyHPOiGw

深度学习PyTorch的教程代码

https://mp.weixin.qq.com/s/i70pT7pQpdoCXXhXq2_MEw

四天速成!香港科技大学PyTorch教程

https://mp.weixin.qq.com/s/7Wr70NFi4pxvSpRr2Q1zsQ

强大的PyTorch:10分钟让你了解深度学习领域新流行的框架

https://mp.weixin.qq.com/s/y5LLraGWuYUbOted9N-GWQ

如何从TensorFlow转入PyTorch

https://mp.weixin.qq.com/s/KRuEuAOXU2fpSNyOJW4bpA

Yoshua Bengio实验室MILA开放面向初学者的PyTorch教程

https://mp.weixin.qq.com/s/QjhokXDXuglJajULKigt1g

PyTorch手把手深度学习教程系列完整版

https://mp.weixin.qq.com/s/FGL1vYaXvv-NCcq0vithZw

深度学习框架:PyTorch入门与实践

https://github.com/jinfagang/pytorch_name_net

PyTorch人工智能自动取名

https://mp.weixin.qq.com/s/UGGrK5LwOP2aLVTz0AGMDw

如何通过PyTorch实现Tensor

https://mp.weixin.qq.com/s/9X77MPcQOQPwZaOVIVfo9Q

用PyTorch搭建抽取式摘要系统

https://mp.weixin.qq.com/s/rORvudwdbnmSvzFhM1gVOA

斯坦福大学CS-224n课程中深度NLP模型的PyTorch实现

https://mp.weixin.qq.com/s/Chk-QAPhIXlIeguT4hS6kg

对比ResNet:超深层网络DiracNet的PyTorch实现

https://mp.weixin.qq.com/s/BP9MToKcE1MJmQTQv2UUZQ

Pytorch开源VQA神经网络模块,让你快速完成看图问答

https://mp.weixin.qq.com/s/QqRjvWMMKosPh9qfU61BzQ

浅谈将Pytorch模型从CPU转换成GPU

https://mp.weixin.qq.com/s/aMfPBl6E5SxckQdSAGTkBg

Pytorch教程:Facebook发布的LR-GAN如何生成图像?

https://mp.weixin.qq.com/s/BjSx3tSQ2Xa0ja_j6dA7eA

Pytorch中的DataLoader的相关记录

https://mp.weixin.qq.com/s/vx0txFUf10QDBlldz0VJmg

AI插画师:如何用基于PyTorch的生成对抗网络生成动漫头像?

https://mp.weixin.qq.com/s/xHXsMxMTdnCWkuwzHs_7Cg

深度学习实验流程及PyTorch提供的解决方案

https://mp.weixin.qq.com/s/HPRUQSsUdk3rXBBl_GpFMw

对抗自编码器PyTorch手把手实战系列——PyTorch实现自编码器

https://mp.weixin.qq.com/s/5sY_IzwIz-lbDLtWJM-GRQ

PyTorch实例:用ResNet进行交通标志分类

https://mp.weixin.qq.com/s/zN3k51g9gjQvc43AH-ypGA

如何通过PyTorch上手Tensor Comprehensions?

https://mp.weixin.qq.com/s/BsMwZC3IoXA58OybZ3aYcg

pytorch中如何处理RNN输入变长序列padding

https://mp.weixin.qq.com/s/abd62HNlen9sepH3CrmpGg

PyTorch为何如此高效好用?来探寻深度学习框架的内部架构

https://mp.weixin.qq.com/s/OMjfck4jlMneGZ1NJxbjKQ

PyTorch有哪些坑/bug?

https://mp.weixin.qq.com/s/UykIKAeKB-0eqk6UqvXwXA

对抗自编码器PyTorch手把手实战系列——PyTorch实现对抗自编码器

https://mp.weixin.qq.com/s/E8RMSXVZucSGQJxFdtMgkg

PyTorch实例:用ResNet进行交通标志分类

https://mp.weixin.qq.com/s/_hbuk9nZaLoNSZ5AnDnELg

使用PyTorch从零开始构建Elman循环神经网络

https://mp.weixin.qq.com/s/FQxSYjyR1U3TIinSShnOfg

从头开始了解PyTorch的简单实现


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK