PyTorch入门

  • PyTorch的安装
  • CPU版本
  • GPU版本


PyTorch的安装

本篇在Tensorflow安装的基础上进行PyTorch的安装示例,有关于Anaconda环境设置、Tensorflow版本安装以及pipconda命令的相关设置均在之前的博客中详细说明。
基于Anaconda环境的Tensorflow安装

CPU版本

其实PyTorch的安装与Tensorflow相比要复杂一些,与一般第三方库以及Tensorflow的安装仅需要pip install --相比,PyTorch的安装命令更为复杂,但好在PyTorch的官网给出了官方下载命令,所以这也不是什么大问题。我们首先进入PyTorch官网下载网页PyTorch官方下载

之后会有如下页面:

conda下载pytorch环境 conda install pytorch_conda下载pytorch环境


在Pytorch Build一栏中Stable表示万无一失的版本,很稳定,而Preview表示最新版本,可能会有bug,这里建议选择Stable版本。之后操作系统就根据自身情况来选择,现在大多数小白应该都是在Windows环境下。在Package中虽然有pipconda两种主流选择,但最终在命令行运行command时亲测conda命令极其稳定,几乎不会出现RunTimeError的问题。但采用pip命令时,即使已经更换到清华源,还是会存在RunTimeError的问题,因此推荐conda命令。

Language的话小白应该都是用Python进行机器学习方面的工作,况且都已经安装Anaconda了,和C++以及Java都没什么关系了。

最后是CUDA的选择,如果只是想简单跑个例子,CPU版本就足够了,这在之前的博客中也提到了,这里选择None就可以。

这样最后把得到的command在命令行直接键入即可,

conda下载pytorch环境 conda install pytorch_windows_02

与Tensorflow的安装一样,不需要特地新建环境,那样虽然方便,但确实没必要。

GPU版本

Pytorch的GPU版本其实与CPU版本的安装一个道理,只是把下图中的CUDA由None换为别的选项

conda下载pytorch环境 conda install pytorch_Tensorflow_03


这里只要根据自己电脑所安装的CUDA版本进行选择即可,一般为10.1或10.2。

但这里有一个问题,在之前的Tensorflow安装中,我提到为了稳定选择了CUDA10.0,而这里没有10.0的选项,为此再去下载一个CUDA10.1或10.2的版本同时配置相应版本的Cudnn当然也可以,但确实没必要。因此我们可以看到下图

conda下载pytorch环境 conda install pytorch_pytorch_04


这里的install previous versions of PyTorch即为之前版本Pytorch的超链接之前版本

conda下载pytorch环境 conda install pytorch_conda下载pytorch环境_05


在这里我们可以找到与CUDA10.0版本适配的PytorchGPU版本,虽然版本有些古老,但胜在稳定,同时Pytorch的语法函数体系与Tensorflow不同,他的每一版本语法几乎没有变化,相互兼容度较高,因此老版本Pytorch是完全够用的。

在之前Tensorflow安装中采用的CUDA10.0以及Cudnn7.x的配置在Pytorch的GPU版本安装中是完全够用的,与CPU版本一样,将得到的命令输入至Windows命令行,即可安装GPU版本Pytorch。

最后在Pytorch实例教程官方网站中即可对Pytorch进行较为系统的初步学习。

比如其中的Visualizing models,Data and Training with Tensorboard模块:

import matplotlib.pyplot as plt
import numpy as np

import torch
import torchvision
import torchvision.transforms as transforms

import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

# transforms
transform = transforms.Compose(
    [transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))])

# datasets
trainset = torchvision.datasets.FashionMNIST('./data',
    download=True,
    train=True,
    transform=transform)
testset = torchvision.datasets.FashionMNIST('./data',
    download=True,
    train=False,
    transform=transform)

# dataloaders
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                        shuffle=True, num_workers=2)


testloader = torch.utils.data.DataLoader(testset, batch_size=4,
                                        shuffle=False, num_workers=2)

# constant for classes
classes = ('T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
        'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle Boot')

# helper function to show an image
# (used in the `plot_classes_preds` function below)
def matplotlib_imshow(img, one_channel=False):
    if one_channel:
        img = img.mean(dim=0)
    img = img / 2 + 0.5     # unnormalize
    npimg = img.numpy()
    if one_channel:
        plt.imshow(npimg, cmap="Greys")
    else:
        plt.imshow(np.transpose(npimg, (1, 2, 0)))
        ...

以上仅代表个人观点,如有错误还请各位大佬指正。