- 理解DNN框架中的张量算子的原理
- 基于不同方法实现新的张量运算,并比较性能差异
- PyTorch==1.5.0
- 深度神经网络中的张量运算原理
- PyTorch中基于Function和Module构造张量的方法
- 通过C++扩展编写Python函数模块
-
在MNIST的模型样例中,选择线性层(Linear)张量运算进行定制化实现
-
理解PyTorch构造张量运算的基本单位:Function和Module
-
基于Function和Module的Python API重新实现Linear张量运算
- 修改MNIST样例代码
- 基于PyTorch Module编写自定义的Linear 类模块
- 基于PyTorch Function实现前向计算和反向传播函数
- 使用自定义Linear替换网络中nn.Linear() 类
- 运行程序,验证网络正确性
-
理解PyTorch张量运算在后端执行原理
-
实现C++版本的定制化张量运算
- 基于C++,实现自定义Linear层前向计算和反向传播函数,并绑定为Python模型
- 将代码生成python的C++扩展
- 使用基于C++的函数扩展,实现自定义Linear类模块的前向计算和反向传播函数
- 运行程序,验证网络正确性
-
使用profiler比较网络性能:比较原有张量运算和两种自定义张量运算的性能
-
【可选实验,加分】实现卷积层(Convolutional)的自定义张量运算
硬件环境 | CPU(vCPU数目) | |
GPU(型号,数目) | ||
软件环境 | OS版本 | |
深度学习框架 python包名称及版本 |
||
CUDA版本 | ||
实现方式(Linear层为例) | 性能评测 |
PyTorch原有张量运算 |
|
基于Python API的定制化张量运算 |
|
基于C++的定制化张量运算 |
|
-
基于Python API实现定制化张量运算Linear
代码位置:
Lab2/mnist_custom_linear.py
运行命令:
python mnist_custom_linear.py
-
基于C++ API实现定制化张量运算Linear
代码位置:
Lab2/mnist_custom_linear_cpp.py
运行命令:
cd mylinear_cpp_extension python setup.py install --user cd .. python mnist_custom_linear_cpp.py
- EXTENDING PYTORCH: https://pytorch.org/docs/master/notes/extending.html