当前位置: 首页 > article >正文

Pytorch文件夹结构

Pytorch文件夹结构

_pycache_ 缓存

该文件夹存放python解释器生成的字节码,后缀通常为pyc/pyo。其目的是通过牺牲一定的存储空间来提高加载速度,对应的模块直接读取pyc文件,而不需再次将.py语言转换为字节码的过程,从此节省了时间。

从文件夹名称可知,它是一个缓存,如果需要,我们当然可以删掉它。

_C 封装起来的C++

从文件夹名称就知道它和C语言有关,其实它是辅助C语言代码调用的一个模块,该文件夹里存放了一系列pyi文件,pyi文件是python用来校验数据类型的,如果调用数据类型不规范,会报错。

PyTorch的底层计算代码采用的是C++语言编写,并封装成库,供pytorch的python语言进行调用。这一点非常重要,后续我们会发现一些pytorch函数无法跳转到具体实现,这是因为具体的实现通过C++语言。

include C++的头文件

上面讲到pytorch许多底层运算用的是C++代码,那么C++代码在哪里呢? 它们在这里,在torch/csrc文件夹下可以看到各个.h/.hpp文件,而在python库中,只包含头文件,这些头文件就在include文件夹下。

lib 链接库

torch文件夹中最重要的一个模块,torch文件夹占3.2GB的空间,98%的内容都在lib中,占了3.16GB空间。

lib文件夹下包含大量的.lib .dll文件(分别是静态链接库和动态链接库),例如大名鼎鼎的cudnn64_7.dll(占435MB), torch_cuda.dll(940MB)。这些底层库都会被各类顶层python api调用。

autograd 梯度自动求导

该模块是pytorch的核心模块与概念,它实现了梯度的自动求导,极大地简化了深度学习研究者开发的工作量,开发人员只需编写前向传播代码,反向传播部分由autograd自动实现,再也不用手动去推导数学公式,然后编写代码了。

nn 网络层?暂时不理解

相信这个模块是99%pytorch开发者使用频率最高的模块,搭建网络的网络层就在nn.modules里边。

onnx 不理解,后续补充

pytorch模型转换到onnx模型表示的核心模块,进入文件夹可以看到大量的opset**.py。

optim 优化模块

优化模块,深度学习的学习过程,就是不断的优化,而优化使用的方法函数,都暗藏在了optim文件夹中,进入该文件夹,可以看到熟悉的优化方法:“Adam”、“SGD”、“ASGD”等。以及非常重要的学习率调整模块,lr_scheduler.py。、

utils 工具?

utils是各种软件工程中常见的文件夹,其中包含了各类常用工具,其中比较关键的是data文件夹,tensorboard文件夹,这些工具都将在后续章节详细展开。


torchvision模块

datasets 数据读取函数

这里是官方为常用的数据集写的数据读取函数,例如常见的cifar, coco, mnist,svhn,voc都是有对应的函数支持,可以方便地使用轮子,同时也可以学习大牛们是如何写dataset的。

models 视觉模型库,暂时应该用不上

这里是宝藏库,里边存放了经典的、可复现的、有训练权重参数可下载的视觉模型,例如分类的alexnet、densenet、efficientnet、mobilenet-v1/2/3、resnet等,分割模型、检测模型、视频任务模型、量化模型。这个库中的模型实现,也是大家可以借鉴学习的好资料,可以模仿它们的代码结构、函数、类的组织。

ops 视觉任务特殊功能函数?

视觉任务特殊的功能函数,例如检测中用到的 roi_align, roi_pool,boxes的生成,以及focal_loss实现,都在这里边有实现。

transforms 视觉数据增强库

数据增强库,相信99%的初学者用到的第一个视觉数据增强库就是transforms了,transforms是pytorch自带的图像预处理、增强、转换工具,可以满足日常的需求。但无法满足各类复杂场景,因此后续会介绍更强大的、更通用的、使用人数更多的数据增强库——Albumentations。

参考:https://tingsongyu.github.io/PyTorch-Tutorial-2nd/chapter-2/2.1-module-tree.html


http://www.kler.cn/a/451313.html

相关文章:

  • 秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
  • 【C++ 基础】从C到C++有哪些变化
  • 重温设计模式--2、设计模式七大原则
  • 结合实例从HCI层分析经典蓝牙连接和配对过程
  • Vue3中路由跳转之后删除携带的query参数
  • windows11家庭版安装docker无法识别基于wsl2的Ubuntu
  • 2024 年12月英语六级CET6听力原文(Long Conersation和Passage)
  • Java期末复习JDBC|网课笔记+校课总结
  • 麒麟系统修改配置镜像源地址并安装openGL
  • WebAssembly与WebGL结合:高性能图形处理
  • Python知识分享第三十五天-Pandas分组聚合
  • Linux 静默安装weblogic及JDK安装
  • chrome主页被被篡改的修复方法
  • 安全见闻(2)
  • 命令手动更新 Navigator
  • C 数组:索引魔杖点化的数据星图阵列
  • Grafana服务监控与日志查询可视化
  • 【C++】B2066救援题目分析和解决讲解
  • 随手记录第十四话 -- 在 Spring Boot 3.2.3 中使用 springdoc-openapi-starter-webmvc-ui
  • 解决Ubuntu下无法装载 Windows D盘的问题
  • 爬虫学习案例8
  • 【开源】一款基于SpringBoot的智慧小区物业管理系统
  • 华为堆叠的多主检测
  • Python数据分析可视化之词云图
  • 架构师应如何考虑重构
  • ArcGIS Maps SDK for JavaScript:根据经纬度定位,并添加定位标记