Pytorch使用相关问题


pytorch安装

Ubuntu下安装

pip install http://download.pytorch.org/whl/cu75/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl
pip install torchvision
使用conda安装
conda install pytorch torchvision -c pytorch

Ubuntu 17.04 安装 pytorch and pytorchvision


相关描述

PyTorch, a year in…. pytorch发布一年的总结

新手如何入门pytorch? 知乎上关于pytorch的相关学习建议,非常有参考价值。

PyTorch到底好用在哪里? 比较了PyTorch和TensorFlow的优缺点。


博客资料

pytorch学习笔记(二):gradient 介绍pytorch中Variable的grad相应计算,说明了optim的引入原因,梯度清零的原因(梯度的累加),Variable保存了tensor和grad,真正计算的仍然是内部的tensor。


pytorch教程

PyTorchZeroToAll

Awesome-pytorch-list 这是pytorch-list的awesome系统,其中的资料可以参考学习一下

grokking-pytorch PyTorch编程思路。


pytorch示例程序

使用官网提供的示例程序来对pytorch进行一个初步大致的了解,对常用深度学习的框架进行一个初步的学习。 目前学习pytorch主要是通过示例程序以及莫烦PYTHON中pytorch的视频教程。

examples pytorch github

pytorch官网

pytorch工程github

PyTorch中文文档

Welcome to PyTorch Tutorials

pytorch-tutorial 这篇教程实现了很多经典模型,值得参考。

莫烦PyTorch,其公开了使用Tensorflow构建计算机视觉的教程仓库Tensorflow-Computer-Vision-Tutorial

PyTorch-Tutorial

#2.3 Activation Function 激励函数 (PyTorch tutorial 神经网络 教学)

pytorch-examples

训练神经网络

PyTorch 中文网

PyTorch深度学习:60分钟入门(Translation)

pytorch-examples

吐血整理:PyTorch项目代码与资源列表 | 资源下载

GAN入门实践(二)–Pytorch实现

DiscoGAN-pytorch

the-incredible-pytorch 本仓库收集了相关的pytorch项目。

pytorch-best-practice 通过Cats Vs Dogs比赛介绍pytorch项目基本架构。

contrib 类似于opencv和tensorflow中的contrib。


pytorch常用第三方包装


pytorchvision使用相关

pytorchvision是torch中用来简化对image的相关操作,其中包含了对大量常用数据集的一个简化操作,下面具体的操作可以参考torch_vision_cifar10 这个代码中主要介绍了dataset的用法以及transform对图像的预处理的用法,然后还有就是dataloader将图像按照batch_size分类的方法将图像按照batch的方法随机筛选图像作为数据集,每一次next都会返回batch_size的训练数据集。

超简单!pytorch入门教程(四):准备图片数据集

超简单!pytorch入门教程(五):训练和测试CNN


tensorboard-pytorch

pip install tensorboardX

tensorboard-pytorch


常用模型

pretrained-models.pytorch 这个仓库包含了大量预先训练的pytorch模型。

vgg模型

一些将VGG16和VGG19的caffe模型权值转换为pytorch,该模型需要预先下载模型vgg16-00b39a1b.pthvgg19-d01eb7cb.pth 注意点:该模型使用过程不同于pytorch model zoo中的其他模型,图像格式为BGR格式,范围为[0, 255],并且需要减去[103.939, 116.779, 123.68]。 pytorch-vgg

piwise

piwise


常用函数

PixelShuffle

将(B, (C*r^2), H, W)转换为(B, C, H*r, W*r)

>>> ps = nn.PixelShuffle(3)
>>> input = autograd.Variable(torch.Tensor(1, 9, 4, 4))
>>> output = ps(input)
>>> print(output.size())
torch.Size([1, 1, 12, 12])

pixelshuffle.py


torch.utils.model_zoo

加载model_zoo

torch.utils.model_zoo

# 文件名为filename-<sha256>.ext结构,其中sha256是sha256 hash值的前八个值
# sha256sum resnet18-5c106cde.pth
# 5c106cde386e87d4033832f2996f5493238eda96ccf559d1d62760c4de0613f8
state_dict = torch.utils.model_zoo.load_url('https://s3.amazonaws.com/pytorch/models/resnet18-5c106cde.pth')

pytorch增加一个维度

numpy中使用np.newaxis即可,pytorch使用None表示。



可视化

import torch
from torch.autograd import Variable
from torch import nn
from torchviz import make_dot, make_dot_from_trace

model = nn.Sequential()
model.add_module('W0', nn.Linear(8, 16))
model.add_module('tanh', nn.Tanh())
model.add_module('W1', nn.Linear(16, 1))

x = Variable(torch.randn(1,8))
y = model(x)

make_dot(y.mean(), params=dict(model.named_parameters()))

trace, _ = torch.jit.trace(model, args=(x,))
make_dot_from_trace(trace)

pytorchviz


summary

from torchsummary import summary
summary(your_model, input_size=(channels, H, W))

类似于keras中的model.summarypytorch-summary


expand_as

将tensor扩展为参数tensor的大小。

expand_as(tensor)


tnt

an abstraction to train neural networks训练神经网络的抽象框架,提供数据集的加载和性能评估以及日志的记录。

tnt


torch测试模型

使用torch测试模型,需要使用model.eval,否则BatchNorm会导致奇怪的结果。

Torchvision pretrained resnet was not trained well?


常见issue


model = model.double()

RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 ‘weight’

RuntimeError: expected Double tensor (got Float tensor)


high level的训练神经网络插件ignite

pytorch社区开源的ignite是帮助在pytorch中快速简洁的训练神经网络,设计模式类似于keras的ModelCheckPoint等等。

ignite


pytorch项目模版

pytorch-template PyTorch deep learning projects made easy.


pytorch使用narrow

将相应维度的大小压缩到start到start+length。

x = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
x.narrow(0, 0, 2)
# tensor([[ 1,  2,  3],
#         [ 4,  5,  6]])
x.narrow(1, 1, 2)
# tensor([[ 2,  3],
#         [ 5,  6],
#         [ 8,  9]])

narrow(dimension, start, length)