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

常用torch.nn

目录

  • 一、torch.nn和torch.nn.functional
  • 二、nn.Linear
  • 三、nn.Embedding
  • 四、nn.Identity
  • 五、Pytorch非线性激活函数
  • 六、nn.Conv2d
  • 七、nn.Sequential
  • 八、nn.ModuleList
  • 九、torch.outer torch.cat

一、torch.nn和torch.nn.functional

Pytorch中torch.nn和torch.nn.functional的区别及实例详解
Pytorch中,nn与nn.functional有哪些区别?
相同之处:

两者都继承于nn.Module
nn.x与nn.functional.x的实际功能相同,比如nn.Conv3d和nn.functional.conv3d都是进行3d卷积
运行效率几乎相同
不同之处:
nn.x是nn.functional.x的类封装,nn.functional.x是具体的函数接口
nn.x除了具有nn.functional.x功能之外,还具有nn.Module相关的属性和方法,比如:train(),eval()等
nn.functional.x直接传入参数调用,nn.x需要先实例化再传参调用
nn.x能很好的与nn.Sequential结合使用,而nn.functional.x无法与nn.Sequential结合使用
nn.x不需要自定义和管理weight,而nn.functional.x需自定义weight,作为传入的参数

二、nn.Linear

torch.nn.functional 中的 Linear 函数
torch.nn.functional.linear 是 PyTorch 框架中的一个功能模块,主要用于实现线性变换。这个函数对于构建神经网络中的全连接层(或称为线性层)至关重要。它能够将输入数据通过一个线性公式(y = xA^T + b)转换为输出数据,其中 A 是权重,b 是偏置项。

用途
神经网络构建:在构建神经网络时,linear 函数用于添加线性层。
特征变换:在数据预处理和特征工程中,使用它进行线性特征变换。

基本用法如下:

output = torch.nn.functional.linear(input, weight, bias=None)
input:输入数据
weight:权重
bias:偏置(可选)
class torch.nn.Linear(in_features, out_features, bias=True)
参数:
in_features - 每个输入样本的大小
out_features - 每个输出样本的大小
bias - 若设置为False,这层不会学习偏置。默认值:True

对输入数据做线性变换:y=Ax+b
形状:
输入: (N,in_features)
输出: (N,out_features)
变量:
weight -形状为(out_features x in_features)的模块中可学习的权值
bias -形状为(out_features)的模块中可学习的偏置
例子:

>>> m = nn.Linear(20, 30)
>>> input = autograd.Variable(torch.randn(128, 20))
>>> output = m(input)
>>> print(output.size())

三、nn.Embedding

pytorch nn.Embedding详解
nn.Embedding作用
nn.Embedding是PyTorch中的一个常用模块,其主要作用是将输入的整数序列转换为密集向量表示。在自然语言处理(NLP)任务中,可以将每个单词表示成一个向量,从而方便进行下一步的计算和处理。
nn.Embedding词向量转化
nn.Embedding是将输入向量化,定义如下:

torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None, _freeze=False, device=None, dtype=None)
参数说明:
num_embeddings :字典中词的个数
embedding_dim:embedding的维度
padding_idx(索引指定填充):如果给定,则遇到padding_idx中的索引,则将其位置填00是默认值,事实上随便填充什么值都可以)。

在PyTorch中,nn.Embedding用来实现词与词向量的映射。nn.Embedding具有一个权重(.weight),形状是(num_words, embedding_dim)。例如一共有100个词,每个词用16维向量表征,对应的权重就是一个100×16的矩阵。
Embedding的输入形状N×W,N是batch size,W是序列的长度,输出的形状是N×W×embedding_dim。
Embedding输入必须是LongTensor,FloatTensor需通过tensor.long()方法转成LongTensor。
Embedding的权重是可以训练的,既可以采用随机初始化,也可以采用预训练好的词向量初始化。

四、nn.Identity

nn.Identity() 是 PyTorch 中的一个层(layer)。它实际上是一个恒等映射,不对输入进行任何变换或操作,只是简单地将输入返回作为输出。

五、Pytorch非线性激活函数

torch.nn.functional非线性激活函数

六、nn.Conv2d

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)

对几个输入特征图组成的输入信号应用2D卷积。
参数:
input – 输入张量 (minibatch x in_channels x iH x iW)
weight – 过滤器张量 (out_channels, in_channels/groups, kH, kW)
bias – 可选偏置张量 (out_channels) -
stride – 卷积核的步长,可以是单个数字或一个元组 (sh x sw)。默认为1
padding – 输入上隐含零填充。可以是单个数字或元组。 默认值:0
groups – 将输入分成组,in_channels应该被组数除尽

例子:

>>> # With square kernels and equal stride
>>> filters = autograd.Variable(torch.randn(8,4,3,3))
>>> inputs = autograd.Variable(torch.randn(1,4,5,5))
>>> F.conv2d(inputs, filters, padding=1)

七、nn.Sequential

nn.Sequential()介绍
一个序列容器,用于搭建神经网络的模块被按照被传入构造器的顺序添加到nn.Sequential()容器中。除此之外,一个包含神经网络模块的OrderedDict也可以被传入nn.Sequential()容器中。利用nn.Sequential()搭建好模型架构,模型前向传播时调用forward()方法,模型接收的输入首先被传入nn.Sequential()包含的第一个网络模块中。然后,第一个网络模块的输出传入第二个网络模块作为输入,按照顺序依次计算并传播,直到nn.Sequential()里的最后一个模块输出结果。
nn.Sequential()和torch.nn.ModuleList的区别在于:torch.nn.ModuleList只是一个储存网络模块的list,其中的网络模块之间没有连接关系和顺序关系。而nn.Sequential()内的网络模块之间是按照添加的顺序级联的。

八、nn.ModuleList

九、torch.outer torch.cat

**torch.outer:**实现张量的点积,张量都需要是一维向量

import torch
v1 = torch.arange(1., 5.)
print(v1)
v2 = torch.arange(1., 4.)
print(v2)
print(torch.outer(v1, v2))tensor([1., 2., 3., 4.])
tensor([1., 2., 3.])
tensor([[ 1.,  2.,  3.],[ 2.,  4.,  6.],[ 3.,  6.,  9.],[ 4.,  8., 12.]])

**torch.cat:**函数将两个张量(tensor)按指定维度拼接在一起,注意:除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。torch.cat()函数不会新增维度,而torch.stack()函数会新增一个维度,相同的是两个都是对张量进行拼接

相关文章:

常用torch.nn

目录 一、torch.nn和torch.nn.functional二、nn.Linear三、nn.Embedding四、nn.Identity五、Pytorch非线性激活函数六、nn.Conv2d七、nn.Sequential八、nn.ModuleList九、torch.outer torch.cat 一、torch.nn和torch.nn.functional Pytorch中torch.nn和torch.nn.functional的区…...

力扣226.翻转二叉树101.对称二叉树

解决二叉树的问题,经常要习惯从递归角度思考 左子树/右子树是否具备某属性、是否属于什么类型(和题目要求的判断当前树是否xxx一样); 对左/右子树进行什么操作(和题目要求的对当前树的操作一样)。 226.翻转…...

word如何按照原本页面审阅文档

1 视图-阅读视图 2 视图,自己看,懒得打字了哈哈...

前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代

前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代 WebAssembly基础概念工作原理概览WebAssembly实战示例基本使用 安全性与性能优化防范漏洞实践实际工作中的使用技巧结语与讨论 随着Web技术的飞速发展,前端开发者面临越来越…...

NDIS小端口驱动(四)

NDIS中断相关 1. 注册和取消注册中断: 微型端口驱动程序调用 NdisMRegisterInterruptEx 来注册中断。 驱动程序分配并初始化 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 结构,以指定中断特征和函数入口点,驱动程序将结构传递给 NdisMRegister…...

用户态网络缓冲区设计

基于数组实现的环形缓冲区: 优点 使用固定大小的连续空间做用户态缓冲区,利用了内存访问的局部性,可以提高缓存命中率,提高程序性能,在处理大量数据时,缓存的利用率对性能有着很大的影响 正是基于性能的…...

Linux运维工程师基础面试题整理(三)

Linux运维工程师基础面试题整理(三) 1. 文件inode号有什么用?2. 文件的权限怎么设置与管理?3. 如何SSH免密配置?4. 如何快速部署一个web服务?5. 如何更新Linux系统内核?6. centos中如何配置本地yum源?7.Linux 防火墙如何简单配置?8. 有哪些工具可以批量管理Linux服务器…...

基于单片机与传感器技术的汽车起动线路设计

摘 要:在以发动机为动力源的汽车中,起动系统承担起使发动机由非工作状态进入工作状态的重要作用,属于发动机的附属系统。在传统汽车起动系统的基础上提出将单片机与传感器技术运用到起动控制线路中,通过传感器采集发动机工作状态信…...

C#如何通过反射获取外部dll的函数

在C#中,你可以使用反射(Reflection)来加载外部的DLL(动态链接库)并获取其中的函数(在C#中通常称为方法)。但是,请注意,反射主要用于访问类型信息,并且对于非托…...

从零开始傅里叶变换

从零开始傅里叶变换 1 Overview2 傅里叶级数2.1 基向量2.2 三角函数系表示 f ( t ) f(t) f(t)2.2.1 三角函数系的正交性2.2.2 三角函数系的系数 2.3 复指数函数系表示 f ( t ) f(t) f(t)2.3.1 复指数函数系的系数2.3.2 复指数函数系的正交性 2.4 傅里叶级数总结 3 傅里叶变换…...

解决1万条数据前端渲染不卡的问题

万级数据前端渲染优化 解决思路requestAnimationFrame完整代码 解决思路 将数据分组,通过定时器或requestAnimationFrame两种方式分组渲染到Dom上 requestAnimationFrame 渲染数据-动画requestAnimationFram方法 使用requestAnimationFrame可以将动画的每一帧绘制…...

如何编写一个API——Python代码示例及拓展

下面是一个必备的API的demo,包括用户认证、数据库交互、错误处理和更复杂的异步任务处理。使用Flask来创建一个RESTful API,涉及用户注册、登录、以及获取用户信息的功能。 示例1:编写API 安装依赖 首先,你需要安装以下库来支持示例的功能: pip install flask flask-c…...

UMPNet: Universal Manipulation Policy Network for Articulated Objects

1. 摘要 UMPNet是一个基于图像的策略网络,能够推理用于操纵铰接物体的闭环动作序列。该策略支持6DoF动作表示和可变长度轨迹。 为处理多种类的物体,该策略从不同的铰接结构中学习,并泛化到未见过的物体或类别上。该策略是以自监督探索的方式…...

高通 Android 12/13冻结屏幕

冻结屏幕很多第一次听到以为是Android一种异常现象,实则不然,就是防止用户在做一些非法操作导致问题防止安全漏洞问题。 1、主要通过用户行为比如禁止下拉状态栏和按键以及onTouch事件拦截等,不知道请看这篇文章(Touch事件传递流…...

C++实现图的存储和遍历

前言 许多新手友友在初学算法和数据结构时,会被图论支配过。我这里整理了一下图论常见的存储和遍历方式,仅供参考。如有问题,欢迎大佬们批评指正。 存储我将提到四种方式:邻接矩阵、vector实现邻接表、数组模拟单链表实现的前向星…...

AI--构建检索增强生成 (RAG) 应用程序

LLM 所实现的最强大的应用之一是复杂的问答 (Q&A) 聊天机器人。这些应用程序可以回答有关特定源信息的问题。这些应用程序使用一种称为检索增强生成 (RAG) 的技术。 典型的 RAG 应用程序有两个主要组件 索引:从源中提取数据并对其进行索引的管道。这通常在线下…...

QT7_视频知识点笔记_4_文件操作,Socket通信:TCP/UDP

1.事件分发器&#xff0c;事件过滤器&#xff08;重要程度&#xff1a;一般&#xff09; event函数 2.文件操作&#xff08;QFile&#xff09; 实现功能&#xff1a;点击按钮&#xff0c;弹出对话框&#xff0c;并且用文件类读取出内容输出显示在控件上。 #include <QFi…...

智慧社区管理系统:打造便捷、安全、和谐的新型社区生态

项目背景 在信息化、智能化浪潮席卷全球的今天&#xff0c;人们对于生活品质的需求日益提升&#xff0c;期待居住环境能与科技深度融合&#xff0c;实现高效、舒适、安全的生活体验。在此背景下&#xff0c;智慧社区管理系统应运而生&#xff0c;旨在借助现代信息技术手段&…...

CustomTkinter:便捷美化Tkinter的UI界面(附模板)

CustomTkinter是一个基于Tkinter的Python用户界面库。 pip3 install customtkinter它提供了各种UI界面常见的小部件。这些小部件可以像正常的Tkinter小部件一样创建和使用&#xff0c;也可以与正常的Tkinter元素一起使用。 它的优势如下&#xff1a; CustomTkinter的小部件和…...

使用MicroPython和pyboard开发板(15):使用LCD和触摸传感器

使用LCD和触摸传感器 pybaord的pyb对LCD设备也进行了封装&#xff0c;可以使用官方的LCD显示屏。将LCD屏连接到开发板&#xff0c;连接后。 使用LCD 先用REPL来做个实验&#xff0c;在MicroPython提示符中输入以下指令。请确保LCD面板连接到pyboard的方式正确。 >>…...

【全新 v 2.7.5 版本】Open Claw 本地环境一键部署教程

前言 2026 年开源圈爆火的「数字员工」OpenClaw&#xff08;昵称小龙虾&#xff09;&#xff0c;GitHub 星标狂揽 28 万 &#xff0c;凭「本地运行 零代码操作 自动干活」的核心优势圈粉无数&#xff01;很多人误以为它是普通聊天 AI&#xff0c;实则是能真正操控电脑的自动…...

AI专著生成神器来袭!用AI写专著,20万字专著轻松到手!

创新是学术专著的核心&#xff0c;也是写作中最具挑战性的部分。一部合格的专著不能仅仅是已有成果的简单堆叠&#xff0c;而是需要展现贯穿整本书的独到见解、理论框架或者研究方法。面对浩如烟海的学术文献&#xff0c;寻找那些尚未被挖掘的研究空白实属不易——有时选题已经…...

深度解析:谷歌阿里同日亮剑,AI Agent原生时代的技术底座与架构重构

核心导读:2026年5月21日,注定是计算架构史上的分水岭。Google I/O与阿里云峰会隔空共振,双双宣告行业从“以人为核心”的互联网时代,迈入“以Agent为核心”的AI原生架构时代。谷歌打出TPU v8 + Antigravity + Gemini Spark组合拳,阿里则亮出平头哥M890 + Agentic Cloud的王…...

信通院:人工智能模数共振体系研究报告(2026年)

这份由中国信通院与中车工业研究院 2026 年 5 月发布的《人工智能模数共振体系研究报告&#xff08;2026 年&#xff09;》&#xff0c;聚焦数据与模型双向共振&#xff0c;系统阐释模数共振体系内涵、核心要素、能力支撑、协同机制并给出落地建议&#xff0c;为 AI 与实体经济…...

中兴光猫工厂模式终极解锁工具:zteOnu完整指南

中兴光猫工厂模式终极解锁工具&#xff1a;zteOnu完整指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 你是否曾经因为中兴光猫的限制而感到束手无策&#xff1f;想要进行高级配置却…...

终极指南:使用Python脚本突破百度网盘限速壁垒

终极指南&#xff1a;使用Python脚本突破百度网盘限速壁垒 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在云存储服务日益普及的今天&#xff0c;百度网盘凭借其庞大的用户基…...

盐印相不是滤镜,是光学物理建模!:深度解析Midjourney --sref 与 --style raw 联动实现银盐晶体模拟原理

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;盐印相不是滤镜&#xff0c;是光学物理建模&#xff01; 盐印相&#xff08;Salt Print&#xff09;作为一种19世纪诞生的早期摄影工艺&#xff0c;其成像本质并非数字图像处理中的风格化滤镜&#xff0c;而是…...

Arty S7 FPGA开发板实战指南:从硬件解析到项目开发

1. 项目概述&#xff1a;为什么是Arty S7&#xff1f;如果你是一名嵌入式开发者、数字电路设计爱好者&#xff0c;或者正在寻找一块能兼顾学习、原型验证和低成本部署的FPGA开发板&#xff0c;那么Digilent的Arty S7系列很可能已经进入了你的视野。我最初接触这块板子&#xff…...

周村区哪家烧烤好吃?开荤烧烤:12 年匠心,地道烟火味

好的&#xff0c;这是一篇为您撰写的宣传文章&#xff0c;符合CSDN发文规范&#xff0c;突出开荤烧烤的特色&#xff1a;匠心十二载&#xff0c;烟火满周村&#xff1a;探寻地道淄博烧烤——开荤烧烤在美食江湖中&#xff0c;烧烤&#xff0c;尤其是以“小饼烤炉加蘸料”三件套…...

从低空协议劫持实战看 MAVLink 二进制审计在飞控发布环节的必要性

攻防实测复盘&#xff1a;协议劫持漏洞成因解析无人机接管攻击的本质不是高危漏洞&#xff0c;而是协议与生俱来的默认信任逻辑。近期多项低空攻防实测中&#xff0c;攻击者依托通用射频采集设备&#xff0c;即可持续捕获空口无线交互数据&#xff0c;实现对飞行设备的非正常控…...