Code Monkey home page Code Monkey logo

pytorchintroduction's Introduction

《深入浅出PyTorch——从模型到源码》书籍源代码

(如果对于代码有疑惑或者代码中有错误,请在GitHub仓库开新的Issue指出。)

源代码目录

1. 第一章 深度学习概念简介

(无代码,略)

2. 第二章 PyTorch 深度学习框架简介

代码2.1 PyTorch软件包的导入和测试

代码2.2 安装PyTorch的依赖关系

代码2.3 PyTorch编译命令

代码2.4 Python列表和Numpy数组转换为PyTorch张量

代码2.5 指定形状生成张量

代码2.6-2.7 指定形状生成张量

代码2.8 PyTorch在不同设备上的张量

代码2.9 PyTorch张量形状相关的一些函数

代码2.10 PyTorch张量的切片和索引

代码2.11 PyTorch张量的函数运算

代码2.12 PyTorch张量的四则运算

代码2.13 PyTorch极值和排序的函数

代码2.14 PyTorch张量的矩阵乘法运算

代码2.15 torch.einsum函数的使用

代码2.16 张量的拼接和分割

代码2.17 张量维度扩增和压缩

代码2.18 张量的广播

代码2.19 PyTorch模块类的构建方法

代码2.20 PyTorch线性回归模型示例

代码2.21 PyTorch线性回归模型调用方法实例

代码2.22 PyTorch模块方法调用实例

代码2.23 反向传播函数测试代码

代码2.24 梯度函数的使用方法

代码2.25 控制计算图产生的方法示例

代码2.26 损失函数模块的使用方法

代码2.27 简单线性回归函数和优化器

代码2.28 PyTorch优化器对不同参数指定不同的学习率

代码2.29 PyTorch学习率衰减类示例

代码2.30 torch.utils.data.DataLoader类的签名

代码2.31 torch.untils.data.Dataset类的构造方法

代码2.32 简单torch.utils.data.Dataset类的实现

代码2.33 torch.utils.data.IterableDataset类的构造方法

代码2.34 PyTorch保存和载入模型

代码2.35 PyTorch的状态字典的保存和载入

代码2.36 PyTorch检查点的结构

代码2.37 TensorBoard使用方法示例

代码2.38 SummaryWriter提供的添加数据显示的方法

代码2.39 torch.nn.DataParallel使用方式

代码2.40 PyTorch分布式进程启动函数

代码2.41 多进程训练模型的数据载入

代码2.42 分布式数据并行模型的API

代码2.43 分布式数据并行模型训练时的输出

3. 第三章 PyTorch 计算机视觉模块

代码3.1-3.3 线性层的定义和使用方法

代码3.4 ConvNd类的定义代码

代码3.5-3.9 归一化层模块的定义

代码3.10-3.15 池化模块的定义

代码3.16 丢弃层模块的定义

代码3.17 顺序模块的构造方法

代码3.18 模块列表和模块字典的构造方法

代码3.19-3.22 AlexNet实例及特征提取模块

代码3.23-3.24 增益系数的计算和模块参数初始化

代码3.25 InceptionNet的基础框架代码

代码3.26-3.27 ResNet的基础框架代码

4. 第四章 PyTorch 机器视觉案例

代码4.1 PyTorch常用的数据集包装类

代码4.2-4.9 LeNet模型工程

代码4.10-4.12 使用argparse库指定LeNet神经网络超参数

代码4.13 imagenet.py训练代码数据载入部分

代码4.14 ResNet瓶颈残差模块的代码实现

代码4.15-4.20 InceptionNet子模块的实现

代码4.21-4.26 SSD模型的代码实现

代码4.27-4.30 FCN模型的代码实现

代码4.31 U-Net模型的代码实现

代码4.32-4.37 图像风格迁移代码

代码4.38-4.39 变分自编码器(VAE)代码实现

代码4.40-4.42 生成对抗网络(GAN)代码实现

5. 第五章 PyTorch 自然语言处理模块

代码5.1 使用sklearn的CountVectorizer来提取词频特征

代码5.2 CountVectorizer类声明

代码5.3 TF-IDF代码实例

代码5.4 TfidfTransformer和TfidfVectorizer类的声明

代码5.5 nn.Embedding类的定义

代码5.6 词嵌入模块的使用示例

代码5.7 从预训练的词嵌入矩阵得到词嵌入模块

代码5.8 nn.EmbeddingBag类的定义

代码5.9-5.10 pack_padded_sequence和pad_packed_sequence的使用

代码5.11 简单RNN的参数代码

代码5.12 RNN代码使用实例

代码5.13 LSTM和GRU的参数定义

代码5.14 LSTM和GRU模块的使用方法

代码5.15 RNNCell、LSTMCell和GRUCell参数定义

代码5.16 RNNCell、LSTMCell和GRUCell的使用方法

代码5.17 MultiheadAttention模块参数定义

代码5.18 Transformer单层编码器和解码器模块定义

代码5.19 Transformer编码器、解码器和Transformer模型

6. 第六章 PyTorch 自然语言处理案例

代码6.1 使用collections.Counter类构建单词表

代码6.2-6.3 CBOW模型及其训练过程

代码6.4 PyTorch余弦相似度的模块的参数定义和使用

代码6.5-6.6 用于情感分析的深度学习模型代码

代码6.7-6.9 基于循环神经网络的语言模型代码

代码6.10-6.12 Seq2Seq模型代码

代码6.13-6.16 BERT模型代码

第七章 其他重要模型

代码7.1 宽深模型代码

代码7.2 CTC损失函数的定义

代码7.3 DeepSpeech模型代码

代码7.4-7.7 Tacotron模型代码

代码7.8-7.9 WaveNet模型代码

代码7.10-7.14 DQN模型代码

代码7.15-7.17 半精度模型的训练

第八章 PyTorch 高级应用

代码8.1-8.10 PyTorch自定义激活函数和梯度

代码8.11-8.14 PyTorch钩子使用方法示例

代码8.15-8.17 PyTorch静态图使用方法示例

代码8.18-8.22 PyTorch静态模型的保存和载入

第九章 PyTorch 源代码解析

代码9.1 native_functions.yaml文件的声明

代码9.2-9.4 pybind11的简单例子

pytorchintroduction's People

Contributors

zxjzxj9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pytorchintroduction's Issues

<勘误> 2.4.1 PyTorch 的主要模块

  1. torch.nn.functional 函数模块中这一小节中,“定义了一些核神经网络相关的函数”,应该为”定义了一些和神经网络相关的函数“。

关于代码仓库Chapter4中gan.py的几点疑惑

本条issue都指的是gan.py里的代码
1.第92行noise = torch.randn(batch_size, nz, 1, 1, device=device)中变量nz是什么?在gan.py里没找到定义
2.第101行errD = errD_real + errD_fake是多余的吧?既然是通过errD_real.backward()errD_fake.backward()分别进行反向传播,把errD_real errD_fake相加得到的errD在后续也没有使用
如果要使用errD,等价的代码应该是去掉errD_real.backward()errD_fake.backward(),然后调用errD.backward()

第8章 GELU代码错误

GULE/gelu/setup.py 的第6行“['gelu.cc', 'gelu_kernel.cu'])]”中“gelu_kernel.cu”命名与“GELU/gelu/gelu_cuda.cu”不同,导致编译失败,需要修改任一名称即可。

<勘误> 5.2 词嵌入层

260页,“一个单词相当于 1×N 的向量,而词嵌入相当于对这个向 量做线性变换,乘以 N×M 的矩阵,最后输出 1×N 的向量”,应为“一个单词相当于 1×N 的向量,而词嵌入相当于对这个向 量做线性变换,乘以 N×M 的矩阵,最后输出 1×M 的向量”。感谢读者的指出。

(疑惑)关于4.7.4节中提到BN在GAN中的作用

原文中提到"通过引入批次归一化层,能够让同一批次的某个输入感知到另外批次的信息,这样就能避免同一批次中有大量的图像一致"
根据BN的计算公式,是对 同一批次 的图像在批次维度上做归一化,所以BN的结果似乎是让某个输入感知到 同一批次 的其它输入的信息,为什么这里提到可以让输入感知到 另外批次 的信息?

关于4.4.2节SSD特征归一化的疑惑

SSD中只对conv4_3卷积层的输出特征进行了归一化,书中写道“其原因主要是conv4_3的特征和后面几层的张量的数值大小不匹配
请问为什么数值大小不匹配就需要对输出特征归一化?如果不进行这种归一化会有哪些坏处?

勘误 ex_2_16.py

line 11:
t4 = torch.radnn(3,2) # 沿着最后一个维度做堆叠,返回大小为3×4×3的张量
中“radnn” 应为 “randn”

4.4.5节的SSD损失函数应该有误

意图是取负样本中损失函数较大的,但文中代码使用的是
_,idx=cls_loss.sort(1)
升序排列,找出的是负样本中损失函数较小的样本

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.