知识点回顾:

  1. 随机张量的生成:torch.randn函数
  2. 卷积和池化的计算公式(可以不掌握,会自动计算的)
  3. pytorch的广播机制:加法和乘法的广播机制
    ps:numpy运算也有类似的广播机制,基本一致

作业:自己多借助ai举几个例子帮助自己理解即可

torch.randn函数

import torch
# 生成标量(0维张量)
scalar = torch.randn(())
print(f"标量: {scalar}, 形状: {scalar.shape}")  
# 生成向量(1维张量)
vector = torch.randn(5)  # 长度为5的向量
print(f"向量: {vector}, 形状: {vector.shape}")  
# 生成矩阵(2维张量)
matrix = torch.randn(3, 4)  # 3行4列的矩阵
print(f"矩阵:{matrix},矩阵形状: {matrix.shape}")  
# 生成3维张量(常用于图像数据的通道、高度、宽度)
tensor_3d = torch.randn(3, 224, 224)  # 3通道,高224,宽224
print(f"3维张量形状: {tensor_3d.shape}")  # 输出: torch.Size([3, 224, 224])
# 生成4维张量(常用于批量图像数据:[batch, channel, height, width])
tensor_4d = torch.randn(2, 3, 224, 224)  # 批量大小为2,3通道,高224,宽224
print(f"4维张量形状: {tensor_4d.shape}")  # 输出: torch.Size([2, 3, 224, 224])

其他随机函数

x = torch.rand(3, 2)  # 生成3x2的张量
print(f"均匀分布随机数: {x}, 形状: {x.shape}")x = torch.randint(low=0, high=10, size=(3,))  # 生成3个0到9之间的整数
print(f"随机整数: {x}, 形状: {x.shape}")mean = torch.tensor([0.0, 0.0])
std = torch.tensor([1.0, 2.0])
x = torch.normal(mean, std)  # 生成两个正态分布随机数
print(f"正态分布随机数: {x}, 形状: {x.shape}")# 一维张量与二维张量相加
a = torch.tensor([[1, 2, 3], [4, 5, 6]])  # 形状: (2, 3)
b = torch.tensor([10, 20, 30])             # 形状: (3,)# 广播后:b被扩展为[[10, 20, 30], [10, 20, 30]]
result = a + b  
result

输出维度测试

import torch
import torch.nn as nn# 生成输入张量 (批量大小, 通道数, 高度, 宽度)
input_tensor = torch.randn(1, 3, 32, 32)  # 例如CIFAR-10图像
print(f"输入尺寸: {input_tensor.shape}")  # 输出: [1, 3, 32, 32]# 1. 卷积层操作
conv1 = nn.Conv2d(in_channels=3,        # 输入通道数out_channels=16,      # 输出通道数(卷积核数量)kernel_size=3,        # 卷积核大小stride=1,             # 步长padding=1             # 填充
)
conv_output = conv1(input_tensor) # 由于 padding=1 且 stride=1,空间尺寸保持不变
print(f"卷积后尺寸: {conv_output.shape}")  # 输出: [1, 16, 32, 32]# 2. 池化层操作 (减小空间尺寸)
pool = nn.MaxPool2d(kernel_size=2, stride=2) # 创建一个最大池化层
pool_output = pool(conv_output)
print(f"池化后尺寸: {pool_output.shape}")  # 输出: [1, 16, 16, 16]# 3. 将多维张量展平为向量
flattened = pool_output.view(pool_output.size(0), -1)
print(f"展平后尺寸: {flattened.shape}")  # 输出: [1, 4096] (16*16*16=4096)
# 4. 线性层操作
fc1 = nn.Linear(in_features=4096,     # 输入特征数out_features=128      # 输出特征数
)
fc_output = fc1(flattened)
print(f"线性层后尺寸: {fc_output.shape}")  # 输出: [1, 128]# 5. 再经过一个线性层(例如分类器)
fc2 = nn.Linear(128, 10)  # 假设是10分类问题
final_output = fc2(fc_output)
print(f"最终输出尺寸: {final_output.shape}")  # 输出: [1, 10]
print(final_output)# 使用Softmax替代Sigmoid
softmax = nn.Softmax(dim=1)  # 在类别维度上进行Softmax
class_probs = softmax(final_output)
print(f"Softmax输出: {class_probs}")  # 总和为1的概率分布
print(f"Softmax输出总和: {class_probs.sum():.4f}")

广播机制的概念

广播机制(Broadcasting)是深度学习框架(如NumPy、PyTorch、TensorFlow)中处理不同形状数组运算的一种规则。它允许在逐元素操作中自动扩展较小数组的形状,使其与较大数组匹配,从而避免显式复制数据。

广播的核心规则

形状对齐:从末尾维度开始比较,两个数组的维度必须满足以下条件之一:

  • 相等
  • 其中一方为1
  • 其中一方缺失该维度

扩展补全:满足对齐条件后,数值会沿长度为1的维度复制扩展。

广播的示例

假设有一个3×4的矩阵 A 和一个长度为4的向量 B

  • A 的形状:(3, 4)
  • B 的形状:(4,) → 自动补齐为 (1, 4) → 再扩展为 (3, 4)
    此时 A + B 会逐元素相加。

应用场景

  • 矩阵与向量相加(如偏置项)
  • 不同维度的张量相乘(如注意力机制中的缩放)
  • 数据归一化时减去均值(形状自动匹配)

常见限制

若形状无法对齐(如3×4矩阵与3×1矩阵相加),会触发错误。需手动调整维度(如使用 reshapeunsqueeze)。

广播机制显著提升了代码简洁性和计算效率,但需注意隐性内存消耗。

维度扩展的规则通常涉及数学、数据科学、机器学习等领域,具体规则取决于应用场景和目标。以下是常见的维度扩展方法和规则:

维度扩展的常见方法

多项式特征扩展
通过生成原始特征的高阶组合(如平方、交叉项)来增加维度。例如,原始特征为 (x_1, x_2),扩展后可包含 (x_1^2, x_2^2, x_1x_2)。

核方法(Kernel Methods)
利用核函数将低维数据映射到高维空间,如径向基函数(RBF)核或多项式核,无需显式计算高维特征。

嵌入学习(Embedding)
通过模型(如Word2Vec、BERT)将离散特征(如文本、类别)转换为连续的高维向量。

离散化与分箱(Binning)
将连续特征划分为多个区间(如年龄分组),生成哑变量(One-Hot编码)以扩展维度。

注意:

维度灾难(Curse of Dimensionality)
过度扩展可能导致数据稀疏性增加,模型性能下降。需平衡维度与样本量。

特征相关性
扩展的特征应与目标变量存在潜在关联,避免无效扩展。可通过特征选择方法筛选。

计算效率
高维数据可能显著增加计算成本,需考虑稀疏存储或分布式计算优化。

具体方法的选择需结合问题类型(如分类、回归)和数据特性(如数值、文本)。

@浙大疏锦行 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85074.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85074.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85074.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习昇腾开发的第四天--基本指令

1、查看npu当前状态信息 npu-smi info 2、查看NPU的ID npu-smi info -l3、调用python python3 4、修改用户名 su - HwHiAiUser 5、查看cann版本 cat /usr/local/Ascend/ascend-toolkit/latest/compiler/version.info 6、删除文件夹 sudo rm -rf HelloWorld7、在本地环…

vue3 - 自定义hook

自定义hook 简单点来说就是将人物或者订单的所有数据和方法放在一个ts文件里面 这样便于维护 假如一个人只需要管 人物的模块 那他只需要操作usePerson.ts文件就可以了 //useDog.ts import { ref,reactive} from vue; import axios from axios;export default function(){…

【python】bash: !‘: event not found

报错 # 2. 测试smplx是否工作(可能不需要chumpy) python -c "import smplx; print(✅ smplx works!)"bash: !: event not found 分析 这是bash的历史扩展问题,感叹号被解释为历史命令。用这些方法解决: &#x1f680…

【Python打卡Day47】注意力热力图可视化@浙大疏锦行

可视化空间注意力热力图的意义: 提升模型可解释性 热力图能直观展示模型决策的依据区域,破除深度学习"黑箱"困境。例如在图像识别中,可以看到模型识别"猫"是因为关注了猫耳和胡须区域,识别"禁止通行&qu…

树状数组 2

L - 树状数组 2 洛谷 - P3368 Description 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 x; 求出某一个数的值。 Input 第一行包含两个整数 N、M,分别表示该数列数字的个数和操作的总个数。…

YOLOv2 技术详解:目标检测的又一次飞跃

🧠 YOLOv2 技术详解:目标检测的又一次飞跃 一、前言 在 YOLOv1 提出后,虽然实现了“实时性 单阶段”的突破,但其在精度和小物体检测方面仍有明显不足。为了弥补这些缺陷,Joseph Redmon 等人在 2017 年提出了 YOLOv2…

JAFAR Jack up Any Feature at Any Resolution

GitHub PaPer JAFAR: Jack up Any Feature at Any Resolution 摘要 基础视觉编码器已成为各种密集视觉任务的核心组件。然而,它们的低分辨率空间特征输出需要特征上采样以产生下游任务所需的高分辨率模式。在这项工作中,我们介绍了 JAFAR——一种轻量级…

SamWaf 开源轻量级网站防火墙源码(源码下载)

SamWaf网站防火墙是一款适用于小公司、工作室和个人网站的开源轻量级网站防火墙,完全私有化部署,数据加密且仅保存本地,一键启动,支持Linux,Windows 64位,Arm64。 主要功能: 代码完全开源 支持私有化部署…

79Qt窗口_QDockWidget的基本使用

目录 4.1 浮动窗⼝的创建 4.2 设置停靠的位置 浮动窗⼝ 在 Qt 中,浮动窗⼝也称之为铆接部件。浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。浮动窗 ⼝⼀般是位于核⼼部件的周围,可以有多个。 4.1 浮动窗⼝的创建 浮动窗⼝的创建是通过 QDockWidget…

UE/Unity/Webgl云渲染推流网址,如何与外部网页嵌套和交互?

需求分析:用threejs开发的数字孪生模型, 但是通过webgl技术网页中使用,因为模型数据量大,加载比较慢,且需要和其他的业务系统进行网页嵌套和交互,使用云渲染技术形成的推流网址,如何与外部网页嵌…

在Termux中搭建完整Python环境(Ubuntu+Miniconda)

蹲坑也能写python? 📱 环境准备🛠 详细搭建步骤步骤1:安装Linux容器工具步骤2:查看可用Linux发行版步骤3:安装Ubuntu系统步骤4:登录Ubuntu环境步骤5:下载Miniconda安装包步骤6:安装Miniconda⚡ 环境验证💡 使用技巧⚠️ 注意事项前言:想在吃饭、通勤甚至休息间隙…

EventSourcing.NetCore:基于事件溯源模式的 .NET Core 库

在现代软件架构中,事件溯源(Event Sourcing)已经成为一种非常流行的模式,尤其适用于需要高可用性和数据一致性的场景。EventSourcing.NetCore 是一个基于事件溯源模式的 .NET Core 库,旨在帮助开发者更加高效地实现这一…

Linux下的第一个程序——进度条(命令行版本)

文章目录 编写Linux下的第一个小程序——进度条进度条的样式前置知识回车和换行缓冲区对回车、换行、缓冲区、输出的测试代码简单的测试样例倒计时程序 进度条程序理论版本基本框架代码实现 真实版本基础框架 代码实现 编写Linux下的第一个小程序——进度条 在前面的基础开发工…

【项目】仿muduo库one thread one loop式并发服务器前置知识准备

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 |🗃️ mysql 本文介绍了一种基于muduo库实现的主从Reactor模型高并发服务器框架…

steam报网络错误,但电脑是网络连接的

steam报网络错误,但电脑是网络连接的 如: 解决办法: 关闭电脑防火墙和所有杀毒软件,然后重新打开steam开代理,可能国内有时候访问不了 首选1进行尝试 steam安装路径一定要在纯英文路径下 已ok

Vue 组合式 API 与 选项式 API 全面对比教程

一、前言:Vue 的两种 API 风格 Vue 提供了两种编写组件逻辑的方式:组合式 API (Composition API) 和 选项式 API (Options API)。理解这两种方式的区别和适用场景,对于 Vue 开发者至关重要。 为什么会有两种 API? 选项式 API&a…

HarmonyOS 应用模块化设计 - 面试核心知识点

HarmonyOS 应用模块化设计 - 面试核心知识点 在 HarmonyOS 开发面试中,模块化设计是必考知识点。本文从面试官角度深度解析 HarmonyOS 应用模块化设计,涵盖 HAP、HAR、HSP 等核心概念,助你轻松应对技术面试! 🎯 面试高…

Maven高级学习笔记

分模块设计 为什么分模块设计?将项目按照功能拆分成若干个子模块,方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。 注意事项:分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕&…

[创业之路-423]:经济学 - 大国竞争格局下的多维博弈与科技核心地位

在当今风云变幻的国际舞台上,大国竞争已成为时代的主旋律,其激烈程度与复杂性远超以往。这场全方位的较量,涵盖了制度、思想、文化、经济、科技、军事等诸多关键领域,每一个维度都深刻影响着大国的兴衰成败,而科技在其…

【企业容灾灾备系统规划】

一、企业灾备体系 1.1 灾备体系 灾备切换的困境: 容灾领域的标准化方法和流程、算法体系是确保业务连续性和数据可靠性的核心,以下从标准框架、流程规范、算法体系三个维度进行系统分析: 1.1.1、标准化方法体系​ ​1. 容灾等级标准​ ​国际标准SHARE78​: 将容灾能力划…