川芎,PyTorch进阶之路(一):张量与梯度,春节的古诗

选自medium

作者:Aakash N S

PyTorch 是 Facebook 开发和保护的一个开源的神经网络库,近来的发展势头适当微弱,也有越来越多的开发者为其编撰,本文也是其中之一。这是「PyTorch: Zero to GANs静香簿本」系列教程的第一篇,介绍了 PyTorch 模型的根本构件:和梯度。

完好系列教程包含:

本系列教程旨在让用户更好地运用 PyTorch 学习深度学习和神经网络。本文将介绍 火蓝刀锋之海龙王PyTorch 模型的根本构件:张量和梯度。

体系设置

本教程选用代码优先的办法来学习 PyTo叶子笛rch,你应该测验自己运转和试验代码。咱们将运用 Python 的 Anaconda 散布打铁空气锤来装置代码库并办理虚拟环境。关于交互式编码和试验,咱们将运用 Jupyter notebook。本系列一切教程的 Jupyter notebook 川芎,PyTorch进阶之路(一):张量与梯度,新年的古诗都可从 Jovian(Jupyter 的同享协作渠道)上获取。本文的 notebook 能够从以下地址取得:https://jvn.io/aakashns/e5cfe043873f4f3c9287507016747ae5

经过在 Jupyter 内部直接运转单个指令,Jovian 使得在云端同享 Jupyter notebook 变得很简单。它还能够捕获野村浩二你运转 notebook 所需的 Python 环境超弦巫师和库,因而任何人(包含你自己)都能复现你的研讨。

操作过程如下:

1. 依据以下攻略装置 Anaconda。你或许还要将 Anaconda 二进制文件添加到 PATH 体系中,以便能够运转 conda 指令行东西。

攻略地址:https://conda.io/projects/conda/en/latest/user-guide/install/index.html

2. 经过在 Mac/Linux 酷蓝天空终端或 Windows 指令提示符下运转以下指令(不要$)来装置 jovian Python 库:

$ pip install jovian --upgrade

3. 运用 jovian clone 指令下载本文的 notebook:

$ jovian clone e5cfe043873f4f3c9287507016747ae5

这样做能够创立目录 01-pytorch-basics,包含 Jupyter notebook 和 Anaconda 环境文件夹。

$ ls 01-pytorch-basics

01-pytorch-basics.ipynb environment.yml

4. 现在咱们能够翻开目录,运用 conda 经过单个指令装置所需的 Python 库(Jupyter、PyTorch 等):与致虚妹丈

$ cd 01-pytorch-basics

$ conda env update

5. 经过运转以下指令,激活虚拟环易速小贷境:

$ conda activate 01-pytorch-basics

关于旧版 conda 的傻儿焖锅装置,你或许需求运转指令:source activate 01-pytorch-basics。

6. 一旦激活了虚拟环境,咱们经过运转以下指令来发动 Jupyter:

$ jupyter notebook

7. 现在,你能够经过点击终端上显现的链接或拜访 http://localhost:8888 来拜访 恋秋离Jupyter 的 web 界面。

然后,你能够点击 01-pytorch-basics.ipynb 文件夹,翻开它然后运转代码。假如想自己输入代码,你还能够经过点击女王御狼「New」键来创立新的 notebook。

首要导入 PyT辰川时生orch:

张量

本质上来说,PyTorch 是一个处川芎,PyTorch进阶之路(一):张量与梯度,新年的古诗理张量的库。一个张量是一个数字、向量、矩阵或任何 n 维数组。咱们用单个数字创立一个张量:

4. 是 4.0 的缩写。它用来表明你想创立浮点数的 Python(和 PyTorch)。咱们能够经过检查张量的 dtype 特点来验证这一点:

咱们能够试着创立杂乱一点的张量:

张量能够有任何维数。每个维度有不同的长度。咱们能够用张量的.shape 特点来检查每个维度的长度。

张量运算和梯度

咱们能够将张量与常用的管用运算相结合。如下:

咱们现已创立了 3 个张量:x、w 和 b。w 和 b 有额定的参数 requires_grad,设置为 True。一瞬间就能够看看它能做什么。

经过结合这些张量,咱们能够创立新的张量 y。

如预期所料,y 是值为 3 * 4 + 5 川芎,PyTorch进阶之路(一):张量与梯度,新年的古诗=川芎,PyTorch进阶之路(一):张量与梯度,新年的古诗 17 的张量。PyTorch 的特别之处在于,咱们能够主动核算 y 相关于张量(requires_grad 设置为 True)的导数,即 w 和 b。为了核算导数,咱们能够在成果 y 上调用.backward 办法。

y 相关于输入张量的导数被存储在对相应张量的.grad 特点中。

如预期所料,dy/dw 的值与 x 相同(即 3),dy/db 的值为 1。留意,x.grad 的值为 None,由于 x 没有将 requires_grad 设为 True。w_grad 中的「grad」代表梯度,梯度是导数的另一个术语,首要用于处理矩阵。

与 Numpy 之间的互操作性

Numpy 是 Python 中用于数学和科学核算的盛行少男出柜开源库。它支撑在大型多维数组上进行高效运算,具有一个支撑多个库的大型生态体系。这些库包含:

PyTorch 并没有从头发明 wheel,而是与 川芎,PyTorch进阶之路(一):张量与梯度,新年的古诗Numpy 很好地交互,以运用它现有的东西和库生态体系。

能够用 torch.fron_numpy 将 Numpy 数组转化为 PyTorch 张量。

接下来能够验证 Numpy 数组和 PyTo川芎,PyTorch进阶之路(一):张量与梯度,新年的古诗rch 张量是否具有相似的数据类型。

能够运用张量的.to_numpy 办法将 PyTorch 张量转化为 Numpy 数组。

PyTorch 和 Numpy 之间的互操作性真的非常重要,由于你要用的大部分数据集都或许被读取并预处理为 Numpy 数组。

提交及上传 notebook

最终一步是保存并运用 jovian 库提交以上作业

Jovian 将 notebook 上传到 https://jvn.io (https://jvn.io/),用以上方法为你的义犬荷贝 notebook 捕获 Python 环境并创立可同享的链接。你能够运用这一链接共享自己的著作,让任何人都能够运用 jovian clone 指令轻松复现。Jovian 还拥异世觅情之宠爱黑豹有一个强壮的谈论界面,供你和其他人评论及谈论你 notebook 中的某个部分:

延伸阅览

PyTorch 中的张量支撑许多运算,这儿列出的并不翔实。假如你想了解更多关于张量和张量运算的信息,可参阅以下地址:

链接:https://pytorch.org/docs/stable/tensors.html

假如你想运用交互式 Jupyter 环境的优势来进行张量试验并测验上述的各种不同运算组合,能够测验下面这些:

假如你对此感兴趣,且想了解更多关于矩阵导数的信息,能够参阅:

链接:https://en.wi象人族kipedia.org/wiki/Matrix_calculus#Derivatives_with_matrices

以上,咱们完成了关于 PyTorch 中张量和梯度的评论,下一步的主海绵宝宝对大块头题将是线性回归。

该系列文章首要遭到下面两篇文章的启示:

本文为机苦荞头器之心编译,转载请联络本大众号取得授权。

数据剖析 开发 视频
声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。
川芎,PyTorch进阶之路(一):张量与梯度,新年的古诗