PyTorch是一个用于机器学习和深度学习的开源深度学习框架,由Facebook于2016年发布,其主要实现了自动微分功能,并引入动态计算图使模型建立更加灵活。Pytorch可分为前后端两个部分,前端是与用户直接交互的python API,后端是框架内部实现的部分,包括Autograd,它是一个自动微分引擎。
Pytorch基于已有的张量库Torch开发,在PyTorch的早期版本中,使用的是Torch7,后来随着PyTorch的发展,逐渐演变成了PyTorch所使用的张量库。
现如今,Pytorch已经成为开源机器学习系统中,在科研领域市场占有率最高的框架,其在AI顶会上的占比在2022年已达80% [1]。
本文通过详实的代码,从如何安装PyTorch开始,一步一步带领读者熟悉PyTorch和Jupyter Notebook,最终使用PyTorch实现线性回归、逻辑回归以及图像分类,非常适合0基础初学者。
今天为大家带来一份非常详尽的PyTorch教程。本文共分3大部分:
安装PyTorch和Jupyter Notebook
用PyTorch实现线性回归
使用逻辑回归实现图像分类
文章超长,秉承用代码搞定一切的原则,内含大量代码,建议收藏,并分享给你喜欢的人。同时如果有什么疑问,也欢迎留言告知我们。
Tips:为了方便演示,文中代码和返回结果是用截图形式给出。本系列中的所有代码都以Jupyter Notebook形式提供,托管在Jovian。托管链接:
https://jvn.io/aakashns/e5cfe043873f4f3c9287507016747ae5
安装PyTorch和Jupyter Notebook
我们将使用Anaconda的Python发行版来安装库和管理虚拟环境,对于交互式编码和实验,我们将使用Jupyter Notebook。
首先按照官方教程安装Anaconda,接下来安装jovian:
$ pip install jovian --upgrade
下载针对本教程的notebook:
$ jovian clone e5cfe043873f4f3c9287507016747ae5
此时会创建一个01-pytorch-basics的目录,包含01-pytorch-basics.ipynb和environment.yml文件。
$ cd 01-pytorch-basics$ conda env update
目的是不破坏本地Python环境,使用一个虚拟环境。接下来激活
$ conda activate 01-pytorch-basics
启动Jupyter
$ jupyter notebook
打开浏览器,输入http://localhost:8888 。然后点有01-pytorch-basics.ipynb字样的就开始了。
本质上PyTorch是处理Tensor的库。所以我们先来简单看下tensor类型:
因为很多时候我们需要在NumPy的数组和PyTorch数组之间进行转换。
Commit并上传:
上传的项目还可以用 jovian clone 下载回来。操作类似git,这里不再累述。
简单的开场之后,我们直接进入硬核阶段。
用PyTorch实现线性回归
对于线性回归,相信大家都很熟悉了,各种机器学习的书第一个要讲的内容必定有线性回归。
这一部分,我们首先通过最原始的手动操作,来理解整个线性回归的原理和操作流程。
接着我们会再介绍使用PyTorch内置的函数,通过自动化的方式实现线性回归。
线性回归模型中,每个目标变量都被估算为输入变量的加权和及偏差。
先看一张表:
表格第一列是地区,第二类是温度单位华氏度,第二列是降水量单位毫米,第四列是湿度,第五列是苹果产量,第六列是橙子产量。
下面这段代码的目的是为了预估出苹果和橙子在不同地区、不同环境中的产量。
yield_apple = w11 * temp + w12 * rainfall + w13 * humidity + b1yield_orange = w21 * temp + w22 * rainfall + w23 * humidity + b2
分别个温度temp、降水量rainfall、湿度humidity加上不同的权重(w11,w12,w13),最后再加一个b1或者b2的偏差