torch notes
总结一些使用torch过程中的常用的tips和相关知识点
- torch 中的dim:
- Softmax 和Sigmoid函数:
https://zhuanlan.zhihu.com/p/525276061
https://www.cnblogs.com/cy0628/p/13921725.html
- torchscript
是pytorch模型的中间表示,Pytorch提供了一套JIT工具:Just-in-Time,允许用户将模型转换为Torchscript格式;保存后的torchscript模型可以在像C++这种高性能的环境中运行,torchscript是一种从pytorch代码创建可序列化和可优化模型的方法。任何torchscript程序都可以从python进程中加载,并加载到没有python解释器的环境中。torchscript能将动态图转化为静态图。torchscript常和torch.jit合起来用。两种方式:
- torch.jit.trace:把模型和example输入进去,然后调用模型,记录下模型run的时候所进行的操作,但是有decision branch例如if-else这种,torch.jit.trace只是记录当前代码走的路径,control-flow被抹除了;生成的TorchScript模型可以直接用于推理,而不需要Python解释器。只支持前向传播。这意味着它不能用于训练或反向传播。此外,由于它是通过实际输入数据来跟踪模型的,因此它可能无法处理一些边缘情况或异常输入
- torch.jit.script:这有分支的情况下,用torch.jit.script。forward方法会被默认编译,forward中被调用的方法也会按照被调用的顺序被编译;相比之下,torch.jit.script允许用户将整个训练循环(包括前向传播和反向传播)转换为TorchScript模型。这意味着它可以直接用于模型的训练和验证。torch.jit.script可以处理更广泛的模型和计算图,并且可以更好地处理异常情况。此外,它还支持自定义类和函数,这使得它更加灵活和强大
- 如果想要方法不被编译,可以使用 @torch.jit.ignore 或者 @torch.jit.unused
- 把pytorch模型部署到c++平台上的流程主要是:模型转换、保存序列化模型、C++中加载序列化的pytorch模型以及执行script module
- 相关链接:
https://mp.weixin.qq.com/s/7JjRGgg1mKlIRuSyPC9tmg
https://blog.csdn.net/hxxjxw/article/details/120835884
Pytorch中文翻译的网站:https://pytorch.ac.cn/docs/stable/index.html
https://developer.baidu.com/article/detail.html?id=2995518
https://pytorch.panchuang.net/EigthSection/torchScript/
- 常用的注意力模块的一些链接:
https://www.cnblogs.com/wxkang/p/17133460.html
,各种注意力机制https://www.cnblogs.com/Fish0403/p/17221430.html
, SE和CBAMhttps://cloud.tencent.com/developer/article/1776357
, Vision Transformer的综述
- 一个好用的可视化工具:torchinfo:
pip install torchinfo
,能够查看网络模型的输入输出,尺寸,参数量等各类型的指标,方便理解模型。