PyTorch 中 functional.py 文件介绍
PyTorch
PyTorch 是一个开源的机器学习库,广泛用于计算机视觉和自然语言处理等应用。它由 Facebook 的人工智能研究团队开发,并得到了许多研究机构和企业的支持。PyTorch 以其易用性、灵活性和强大的社区支持而受到欢迎。一些特点如下:
-
动态计算图(Dynamic Computation Graphs):PyTorch 使用动态计算图,这意味着图在运行时构建,允许更直观和灵活的模型设计。这与传统的静态图框架(如 TensorFlow 1.x)不同,后者需要在执行前定义整个图。
-
自动微分(Automatic Differentiation):PyTorch 提供了自动微分功能,可以自动计算梯度,这对于训练深度学习模型至关重要。
-
丰富的API:PyTorch 提供了大量的预定义层、优化器和损失函数,使得模型的构建和训练变得简单。
-
多GPU支持:PyTorch 支持多GPU训练,可以有效地利用硬件资源,加速模型训练。
-
序列化和模型共享:PyTorch 允许轻松地保存和加载模型,便于模型的共享和部署。
-
社区支持:PyTorch 拥有一个活跃的社区,提供了大量的教程、文档和预训练模型。
functional.py
功能介绍
- 在 PyTorch 中,
torch.nn.functional.py是一个包含多种函数的模块,这些函数提供了不包含可学习参数的层的实现。这意味着,与 torch.nn.Module 中的层不同,torch.nn.functional.py中的函数不跟踪梯度或在训练过程中更新参数。这些函数通常用于执行各种操作,如卷积、池化、激活函数、损失函数等。
常用函数
-
卷积函数
torch.nn.functional.conv1d: 一维卷积函数。torch.nn.functional.conv2d: 二维卷积函数。torch.nn.functional.conv3d: 三维卷积函数。torch.nn.functional.conv_transpose1d,torch.nn.functional.conv_transpose2d,torch.nn.functional.conv_transpose3d: 转置卷积(也称为去卷积)函数。
-
池化函数
torch.nn.functional.avg_pool1d,torch.nn.functional.avg_pool2d,torch.nn.functional.avg_pool3d: 平均池化函数。torch.nn.functional.max_pool1d,torch.nn.functional.max_pool2d,torch.nn.functional.max_pool3d: 最大池化函数。torch.nn.functional.adaptive_max_pool1d,torch.nn.functional.adaptive_max_pool2d: 自适应最大池化函数。torch.nn.functional.adaptive_avg_pool1d,torch.nn.functional.adaptive_avg_pool2d: 自适应平均池化函数。
-
非线性激活函数
torch.nn.functional.relu: 修正线性单元(ReLU)激活函数。torch.nn.functional.sigmoid: Sigmoid 激活函数。torch.nn.functional.tanh: 双曲正切激活函数。
-
归一化函数
torch.nn.functional.batch_norm: 批量归一化函数。
-
线性函数
torch.nn.functional.linear: 线性变换函数。
-
Dropout 函数
torch.nn.functional.dropout: Dropout 函数。
-
距离函数
torch.nn.functional.pairwise_distance: 计算两个张量之间的成对距离。
-
损失函数
torch.nn.functional.cross_entropy: 交叉熵损失函数。torch.nn.functional.binary_cross_entropy: 二进制交叉熵损失函数。torch.nn.functional.nll_loss: 负对数似然损失函数。
-
视觉函数
torch.nn.functional.pixel_shuffle: 用于将张量重新排列以增加空间分辨率的函数。torch.nn.functional.pad: 用于填充张量的函数。
使用示例
- 卷积函数示例
import torch
import torch.nn.functional as F# 创建一个输入张量,假设是一个单通道的28x28图像
input = torch.randn(1, 1, 28, 28)# 定义卷积核的权重和偏置
weight = torch.randn(1, 1, 3, 3)
bias = torch.randn(1)# 使用 F.conv2d 进行卷积操作
output = F.conv2d(input, weight, bias)print(output.shape) # 输出张量的形状
- 池化函数示例
# 使用 F.max_pool2d 进行最大池化,
# 池化(Pooling)是卷积神经网络(CNN)中常用的一种技术,它用于降低特征的空间维度(高和宽),
# 同时保留最重要的信息。池化操作通常在卷积层之后应用,可以减少模型的参数数量和计算量,
# 提高模型的抽象能力,并且有助于提取更具有泛化性的特征。
pooled = F.max_pool2d(input, kernel_size=2)print(pooled.shape) # 输出张量的形状
- 激活函数示例
# 使用 F.relu 作为激活函数
activated = F.relu(input)print(activated.shape) # 输出张量的形状
- 损失函数示例
# 假设我们有一些预测和目标标签
predictions = torch.randn(10)
targets = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])# 使用 F.cross_entropy 计算交叉熵损失
loss = F.cross_entropy(predictions, targets)print(loss.item()) # 输出损失值
- 归一化函数示例
# 假设我们有一个批量的输入数据
inputs = torch.randn(20, 10)# 使用 F.batch_norm 进行批量归一化
output = F.batch_norm(inputs, running_mean=torch.zeros(10), running_var=torch.ones(10))print(output.shape) # 输出张量的形状
- Dropout 函数示例
# 使用 F.dropout 进行dropout操作,正则化技术,Dropout 通过在训练过程中随机“丢弃”(即将输出设置为零)
# 一部分神经元的输出,来减少神经元之间复杂的共适应关系。
dropped = F.dropout(input, p=0.2)print(dropped.shape) # 输出张量的形状
相关源码
- GitHub地址:https://github.com/pytorch/pytorch/blob/main/torch/nn/functional.py
相关文章:
PyTorch 中 functional.py 文件介绍
PyTorch PyTorch 是一个开源的机器学习库,广泛用于计算机视觉和自然语言处理等应用。它由 Facebook 的人工智能研究团队开发,并得到了许多研究机构和企业的支持。PyTorch 以其易用性、灵活性和强大的社区支持而受到欢迎。一些特点如下: 动态…...
SQL Injection | SQL 注入 —— 报错盲注
关注这个漏洞的其他相关笔记:SQL 注入漏洞 - 学习手册-CSDN博客 0x01:报错盲注 —— 理论篇 报错盲注(Error-Based Blind SQL Injection)是一种常见的 SQL 注入技术,适用于那些页面不会直接显示后端处理结果的查询方式…...
网络通信与并发编程(四)操作系统、进程理论、开启进程的两种方式
多道技术、进程理论 文章目录 多道技术、进程理论一、操作系统1.1操作系统1.2操作系统中的常见概念1.3操作系统的发展史 二、进程理论2.1同步、异步、阻塞、非阻塞2.2 进程的层次结构2.3 运行态、阻塞态、就绪态 三、开启进程的两种方式3.1使用Process创建进程的两种方式3.2 父…...
Java--集合(三)之vectorlinkedlisthashset结构
文章目录 0.架构图1.vector解析2.LinkedList分析2.1源码分析2.2迭代器遍历的三种方式 3.set接口的使用方法3.1基本使用说明3.2基本遍历方式3.3HashSet引入3.4数组链表模拟3.5hashset扩容机制3.6hashset源码解读3.7扩容*转成红黑树机制**我的理解 0.架构图 1.vector解析 和之前介…...
upload-labs Pass-04
upload-labs Pass-04 在进行测试前,先了解一下.htaccess文件 .htaccess文件 .htaccess是Apache网络服务器一个配置文件,当.htaccess文件被放置在一个通过Apache Web服务器加载的目录中,.htaccess文件会被Apache Web服务器软件检测并执行&…...
如何修改jupyter notebook的工作目录
1.生成配置文件: 打开Anaconda Prompt,输入如下命令 jupyter notebook --generate-config 用代码可以找到配置文件位置,如果没有填y可以生成。 2.修改配置文件: 修改jupyter_notebook_config.py的配置文件,需将c.Not…...
23种设计模式具体实现方法
提示:文章 文章目录 前言一、背景二、设计模式1、代理模式2、适配器模式2.1 总结 三、3.1 总结 前言 前期疑问: 本文目标: 一、背景 最近 二、设计模式 1、代理模式 参考的这篇文章,代理模式(Proxy) 同时这篇文章还引用了另…...
cisco网络安全技术第3章测试及考试
测试 使用本地数据库保护设备访问(通过使用 AAA 中央服务器来解决)有什么缺点? 试题 1选择一项: 必须在每个设备上本地配置用户帐户,是一种不可扩展的身份验证解决方案。 请参见图示。AAA 状态消息的哪一部分可帮助…...
数据结构练习题5(链表和栈)
1环形链表 II 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测…...
计算机网络408真题解析(湖科大教书匠)
09年...
uniapp+vue3+uview-plus修改默认样式
最近使用uniappvue3uview-plus开发微信小程序中,使用uview-plus自定义底部导航栏tabbar时,遇到修改默认样式不生效问题 使用传统的 ::v-deep、:deep、::v-deep,或者style标签中去掉scoped也是无效的,有好的方案欢迎交流ÿ…...
数控机械制造工厂ERP适用范围有哪些
在当今制造业高速发展的背景下,企业资源计划(ERP)系统已成为提升工厂管理效率、实现生产自动化与信息化的关键工具。特别是对于数控机械制造工厂而言,一个合适的ERP系统能够帮助其优化生产流程、提高产品质量、降低生产成本并增强市场竞争力。 1. 生产计…...
华为配置 之 Console线路配置
目录 简介: 知识点: 配置Console线路密码 1.密码认证模式 2.AAA认证模式 知识点: 总结: 简介: 使用PC模拟器与路由器相连(与交换机相连原理一样),在关机状态下,使用…...
小米等手机彻底关闭快应用
文章目录 快应用的是非最终措施:撤销快应用隐私协议配套措施:安卓去除开屏广告 无用的操作:载快应用小米手机无用,其他手机可以尝试的操作关闭唤起快应用服务打开防止误触、后台启动其他应用 其他措施:冻结、加密快应用…...
【每日一题】24.10.14 - 24.10.20
10.14 直角三角形1. 题目2. 解题思路3. 代码实现(AC_Code) 10.15 回文判定1. 题目2. 解题思路3. 代码实现(AC_Code) 10.16 二次方程1. 题目2. 解题思路3. 代码实现(AC_Code) 10.17 互质1. 题目2. 解题思路3…...
CMake与Qt4/Qt5的结合使用指南
CMake与Qt4/Qt5的结合使用指南 一、同时使用Qt 4和Qt 5二、Qt构建工具2.1 AUTOMOC2.2 AUTOUIC2.3 AUTORCC 三、<ORIGIN>_autogen目标四、Visual Studio生成器五、Windows上的qtmain.lib六、其他文章推荐 在CMake中,您可以方便地找到并使用Qt 4和Qt 5库。Qt 4库…...
TwinCAT3添加PLC轴,并建立PLC轴与NC轴的链接
右键PLC选项,点击创建新项 在弹出的对话框中,选择PLC Templates,然后选择Standard PLC Project,填写项目名称后点击添加 在PLC项目目录中右键GVLs,选择Add,添加Global Variable List(全局变…...
Linux操作系统如何制作U盘启动盘
在麒麟系统中有一款U盘启动器软件,它是用于制作系统启动U盘的工具,方便无光驱的电脑安装操作系统,也可以反复使用一个U盘,避免光盘的浪费。下面对该U盘启动器使用方法做详细讲解。 1.准备需要安装的系统镜像文件。 图 1 2.准备1…...
如何防止SpringBoot中的jar反编译?解决相关报错及踩到的坑
目录 1. 面对的场景 2. 方案 2.1 使用代码混淆 2.2 JAR包加密 3. 项目操作 4. 启动方式 5. 踩到的各种坑 5.1 java -jar xxx-0.0.1-SNAPSHOT.jar 没有主清单属性 5.2 Caused by: java.lang.IllegalArgumentException: Unrecognized option: -pwdfxw-jar 1. 面对的场景…...
Axios 基本使用
Axios 是一个异步请求技术,核心作用就是用来在页面中发送异步请求,并获取对应数据在页面中渲染 页面局部更新技术 Ajax 中文网站:https://www.kancloud.cn/yunye/axios/234845 安装: <script src"https://unpkg.com/axios/dist/axios.min.js"></script&g…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
