From cec3afa1391e5402edb9da748bf354c12406c47c Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 18 Nov 2022 17:05:32 +0800 Subject: [PATCH] doc: update pytorch.md #138 --- README.md | 4 +- docs/pytorch.md | 148 +++++++++++++++++++++++++++++-------- scripts/assets/pytorch.svg | 3 + 3 files changed, 122 insertions(+), 33 deletions(-) create mode 100644 scripts/assets/pytorch.svg diff --git a/README.md b/README.md index 437ec6c..632ef74 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ Quick Reference [FFmpeg](./docs/ffmpeg.md) [LaTeX](./docs/latex.md) [MATLAB](./docs/matlab.md) -[Vue 3 ](./docs/vue.md) -[Pytorch](./docs/pytorch.md) +[Vue 3](./docs/vue.md) +[Pytorch](./docs/pytorch.md) ## 编程 diff --git a/docs/pytorch.md b/docs/pytorch.md index ef67929..17fbd0b 100644 --- a/docs/pytorch.md +++ b/docs/pytorch.md @@ -1,31 +1,35 @@ Pytorch 备忘清单 === -Pytorch 备忘单是 [Pytorch ](https://pytorch.org/) 官网 +Pytorch 是一种开源机器学习框架,可加速从研究原型设计到生产部署的过程,备忘单是 官网 +备忘清单为您提供了 [Pytorch](https://pytorch.org/) 基本语法和初步应用参考 入门 ----- ### 介绍 -- [Pytorch基本语法] -- [Pytorch初步应用] +- [Pytorch 官网](https://pytorch.org/) _(pytorch.org)_ +- [Pytorch 官方备忘清单](https://pytorch.org/tutorials/beginner/ptcheat.html) _(pytorch.org)_ -### 认识Pytorch +### 认识 Pytorch ```python from __future__ import print_function import torch x = torch.empty(5, 3) >>> print(x) -tensor([[2.4835e+27, 2.5428e+30, 1.0877e-19], - [1.5163e+23, 2.2012e+12, 3.7899e+22], - [5.2480e+05, 1.0175e+31, 9.7056e+24], - [1.6283e+32, 3.7913e+22, 3.9653e+28], - [1.0876e-19, 6.2027e+26, 2.3685e+21]]) +tensor([ + [2.4835e+27, 2.5428e+30, 1.0877e-19], + [1.5163e+23, 2.2012e+12, 3.7899e+22], + [5.2480e+05, 1.0175e+31, 9.7056e+24], + [1.6283e+32, 3.7913e+22, 3.9653e+28], + [1.0876e-19, 6.2027e+26, 2.3685e+21] +]) ``` + -Tensors张量: 张量的概念类似于Numpy中的ndarray数据结构, 最大的区别在于Tensor可以利用GPU的加速功能. +Tensors 张量: 张量的概念类似于Numpy中的ndarray数据结构, 最大的区别在于Tensor可以利用GPU的加速功能. ### 创建一个全零矩阵 @@ -49,10 +53,10 @@ x = torch.tensor([2.5, 3.5]) tensor([2.5000, 3.3000]) ``` -Pytorch的基本语法 +Pytorch 的基本语法 --------------- -### 加法操作 +### 加法操作(1) ```python y = torch.rand(5, 3) @@ -64,9 +68,7 @@ tensor([[ 1.6978, -1.6979, 0.3093], [ 2.6784, 0.1209, 1.5542]]) ``` -第一种加法操作 - -### 加法操作 +### 加法操作(2) ```python >>> print(torch.add(x, y)) @@ -77,9 +79,7 @@ tensor([[ 1.6978, -1.6979, 0.3093], [ 2.6784, 0.1209, 1.5542]]) ``` -第二种加法操作 - -### 加法操作 +### 加法操作(3) ```python # 提前设定一个空的张量 @@ -94,10 +94,7 @@ tensor([[ 1.6978, -1.6979, 0.3093], [ 2.6784, 0.1209, 1.5542]]) ``` -第三种加法操作 - - -### 加法操作 +### 加法操作(4) ```python y.add_(x) @@ -109,17 +106,16 @@ tensor([[ 1.6978, -1.6979, 0.3093], [ 2.6784, 0.1209, 1.5542]]) ``` -第四种加法操作 -注意:所有in-place的操作函数都有一个下划线的后缀. -比如x.copy_(y), x.add_(y), 都会直接改变x的值. +注意: 所有 `in-place` 的操作函数都有一个下划线的后缀。 +比如 `x.copy_(y)`, `x.add_(y)`, 都会直接改变x的值 ### 张量操作 ```python - >>> print(x[:, 1]) tensor([-2.0902, -0.4489, -0.1441, 0.8035, -0.8341]) ``` + ### 张量形状 @@ -132,6 +128,7 @@ z = x.view(-1, 8) >>> print(x.size(), y.size(), z.size()) torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8]) ``` + ### 取张量元素 @@ -143,8 +140,7 @@ tensor([-0.3531]) -0.3530771732330322 ``` - -### Torch Tensor和Numpy array互换 +### Torch Tensor 和 Numpy array互换 ```python a = torch.ones(5) @@ -154,7 +150,7 @@ tensor([1., 1., 1., 1., 1.]) Torch Tensor和Numpy array共享底层的内存空间, 因此改变其中一个的值, 另一个也会随之被改变 -### Torch Tensor转换为Numpy array +### Torch Tensor 转换为 Numpy array ```python b = a.numpy() @@ -162,7 +158,7 @@ b = a.numpy() [1. 1. 1. 1. 1.] ``` -### Numpy array转换为Torch Tensor: +### Numpy array转换为Torch Tensor ```python import numpy as np @@ -174,4 +170,94 @@ np.add(a, 1, out=a) [2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2.], dtype=torch.float64) ``` -注意:所有在CPU上的Tensors, 除了CharTensor, 都可以转换为Numpy array并可以反向转换. + + +注意: 所有在CPU上的Tensors, 除了CharTensor, 都可以转换为Numpy array并可以反向转换. + +导入 Imports +--- + +### 一般 + +```python +# 根包 +import torch +# 数据集表示和加载 +from torch.utils.data import Dataset, DataLoader +``` + + +### 神经网络 API + +```python +# 计算图 +import torch.autograd as autograd +# 计算图中的张量节点 +from torch import Tensor +# 神经网络 +import torch.nn as nn +# 层、激活等 +import torch.nn.functional as F +# 优化器,例如 梯度下降、ADAM等 +import torch.optim as optim +# 混合前端装饰器和跟踪 jit +from torch.jit import script, trace +``` + +### Torchscript 和 JIT + +```python +torch.jit.trace() +``` + +使用你的模块或函数和一个例子,数据输入,并追溯计算步骤,数据在模型中前进时遇到的情况 + +```python +@script +``` + +装饰器用于指示被跟踪代码中的数据相关控制流 + +### ONNX + +```python +torch.onnx.export(model, dummy data, xxxx.proto) +# 导出 ONNX 格式 +# 使用经过训练的模型模型,dummy +# 数据和所需的文件名 + +model = onnx.load("alexnet.proto") +# 加载 ONNX 模型 +onnx.checker.check_model(model) +# 检查模型,IT 是否结构良好 + +onnx.helper.printable_graph(model.graph) +# 打印一个人类可读的,图的表示 +``` + + +### Vision + +```python +# 视觉数据集,架构 & 变换 +from torchvision import datasets, models, transforms +# 组合转换 +import torchvision.transforms as transforms +``` + + +### 分布式训练 + +```python +# 分布式通信 +import torch.distributed as dist +# 内存共享进程 +from torch.multiprocessing import Process +``` + + +另见 +--- + +- [Pytorch 官网](https://pytorch.org/) _(pytorch.org)_ +- [Pytorch 官方备忘清单](https://pytorch.org/tutorials/beginner/ptcheat.html) _(pytorch.org)_ diff --git a/scripts/assets/pytorch.svg b/scripts/assets/pytorch.svg new file mode 100644 index 0000000..39017d3 --- /dev/null +++ b/scripts/assets/pytorch.svg @@ -0,0 +1,3 @@ + + +