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教程
Awesome-pytorch-list 这是pytorch-list的awesome系统,其中的资料可以参考学习一下
grokking-pytorch PyTorch编程思路。
pytorch示例程序
使用官网提供的示例程序来对pytorch进行一个初步大致的了解,对常用深度学习的框架进行一个初步的学习。 目前学习pytorch主要是通过示例程序以及莫烦PYTHON中pytorch的视频教程。
pytorch-tutorial 这篇教程实现了很多经典模型,值得参考。
莫烦PyTorch,其公开了使用Tensorflow构建计算机视觉的教程仓库Tensorflow-Computer-Vision-Tutorial。
#2.3 Activation Function 激励函数 (PyTorch tutorial 神经网络 教学)
PyTorch深度学习:60分钟入门(Translation)
the-incredible-pytorch 本仓库收集了相关的pytorch项目。
pytorch-best-practice 通过Cats Vs Dogs比赛介绍pytorch项目基本架构。
contrib 类似于opencv和tensorflow中的contrib。
pytorch常用第三方包装
- pytorch_fft 使用pytorch封装了FFT。
pytorchvision使用相关
pytorchvision是torch中用来简化对image的相关操作,其中包含了对大量常用数据集的一个简化操作,下面具体的操作可以参考torch_vision_cifar10 这个代码中主要介绍了dataset的用法以及transform对图像的预处理的用法,然后还有就是dataloader将图像按照batch_size分类的方法将图像按照batch的方法随机筛选图像作为数据集,每一次next都会返回batch_size的训练数据集。
tensorboard-pytorch
pip install tensorboardX
常用模型
pretrained-models.pytorch 这个仓库包含了大量预先训练的pytorch模型。
vgg模型
一些将VGG16和VGG19的caffe模型权值转换为pytorch,该模型需要预先下载模型vgg16-00b39a1b.pth和vgg19-d01eb7cb.pth 注意点:该模型使用过程不同于pytorch model zoo中的其他模型,图像格式为BGR格式,范围为[0, 255],并且需要减去[103.939, 116.779, 123.68]。 pytorch-vgg
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])
torch.utils.model_zoo
加载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)
summary
from torchsummary import summary
summary(your_model, input_size=(channels, H, W))
类似于keras中的model.summary
。
pytorch-summary
expand_as
将tensor扩展为参数tensor的大小。
tnt
an abstraction to train neural networks训练神经网络的抽象框架,提供数据集的加载和性能评估以及日志的记录。
torch测试模型
使用torch测试模型,需要使用model.eval
,否则BatchNorm会导致奇怪的结果。
Torchvision pretrained resnet was not trained well?
常见issue
model = model.double()
RuntimeError: expected Double tensor (got Float tensor)
high level的训练神经网络插件ignite
pytorch社区开源的ignite是帮助在pytorch中快速简洁的训练神经网络,设计模式类似于keras的ModelCheckPoint等等。
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]])