从这篇分享开始,每天抽时间再去详细过一遍pytorch,之前只是会用,现在想趁着假期稍微仔细过一遍hh。
今天就先仔细看一下底层一下,目的就是:知道自己每次调包调用的代码函数都在哪里
PyTorch的底层计算代码采用的是
c++
语言编写,并封装成库,供pytorch的python语言进行调用。这一点非常重要,后续我们会发现一些pytorch函数无法跳转到具体实现,这是因为具体的实现通过C++语言,我们无法在Pycharm中跳转查看。
pytorch的模块结构
lib
lib模块占据了torch的大部分空间内容,主要有.lib和.dll的静态链接库和动态链接库两部分,会被python的api调用。
autograd
顾名思义,是梯度自动求导,这直接解决了反向传播的实现,只需要我们完成前向传播的代码。
nn
这个使用频率极高,我们搭建网络的网络层就是nn.modules里面。
optim
优化模块,也是dl中常见的一个过程。优化的方法函数,如熟悉的Adam、SGD、ASGD等;还有学习率调整模块,也是必备项之一。
utils
常用工具的集合,其中比较重要的是data文件夹(如dataloader、dataset等)和tensorboard(可视化)文件夹。
torchvision
路径:D:\Anaconda_data\envs\New\Lib\site-packages\torchvision
- datasets
官方常用的数据集相关的数据读取函数
- models
里边存放了经典的、可复现的、有训练权重参数可下载的视觉模型,可以去学习一下大牛怎么写的
- transforms
感觉新上手最先接触的就是这个库,可以满足日常,但复杂场景就一般了。复杂的还更多的是Albumentations