【Numpy广播机制深度解析】:掌握维度扩展的5大核心规则

第一章:Numpy广播机制的核心概念与意义

Numpy广播(Broadcasting)是NumPy中用于处理不同形状数组之间运算的核心机制。它允许在不复制数据的前提下,对形状不同的数组执行逐元素操作,极大提升了计算效率并简化了代码逻辑。

广播的基本规则

当两个数组进行算术运算时,NumPy会从它们的最后一个维度开始,逐维度检查是否满足以下任一条件:
  • 维度长度相等
  • 其中一个维度长度为1
  • 其中一个数组该维度不存在(即维度不足)
若所有维度均满足上述条件,则广播可以发生。

广播的典型示例

考虑一个二维数组与一个标量的加法操作:
# 创建一个 3x3 的数组
import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
b = 10  # 标量

result = a + b  # 广播发生:标量扩展至 3x3 形状
print(result)
在此例中,标量 b 被自动“拉伸”到与数组 a 相同的形状,从而完成逐元素加法。

广播的维度匹配过程

以下表格展示两个数组形状能否广播:
数组 A 形状数组 B 形状是否可广播
(3, 3)(3, 1)是
(4, 1, 5)(1, 5)是
(2, 3)(3, 2)否
广播机制避免了显式的数据复制,节省内存并提升性能。理解其规则有助于编写更高效、更简洁的向量化代码,尤其在数据预处理和机器学习算法实现中具有重要意义。

第二章:广播的五大基本规则详解

2.1 规则一:从末尾维度向前对齐比较

在多维数组或张量的广播机制中,**从末尾维度向前对齐比较**是判断操作合法性的首要规则。系统不关心各维度的名称或位置,而是逐维度从最后一个开始向前比对。
维度对齐方式
假设两个数组形状分别为 (2, 1, 5) 和 (4, 5),对齐过程如下:
  1. 从末尾开始:第3维 → 5 vs 5(匹配)
  2. 第2维 → 1 vs 4(兼容,1可广播)
  3. 第1维 → 2 vs (缺失,视为1)→ 兼容
代码示例与分析

import numpy as np
a = np.ones((2, 1, 5))
b = np.ones((4, 5))
result = a + b  # 成功广播,结果形状为 (2, 4, 5)
该代码中,NumPy 从末尾维度开始逐一对齐。维度长度相等或其中一方为1时即可广播,最终生成形状为 (2, 4, 5) 的结果数组。

2.2 规则二:维度大小相等或为1方可兼容

在NumPy的广播机制中,两个数组要进行逐元素操作,其形状必须满足“维度大小相等或其中任一为1”的兼容条件。
广播兼容性判断规则
当对两个数组的每一维度从右至左对齐时,若每一对维度满足以下任一条件,则可广播:
  • 维度大小相同
  • 其中一个维度为1
示例分析
import numpy as np
a = np.ones((4, 1))    # 形状 (4, 1)
b = np.ones((1, 6))    # 形状 (1, 6)
c = a + b              # 结果形状 (4, 6)
上述代码中,第一维(4 vs 1)和第二维(1 vs 6)均满足“至少一个为1”,因此可广播。最终输出形状为各维度最大值:(4, 6)。
数组A形状数组B形状是否兼容
(3, 1)(3, 4)是
(2, 1)(1, 3)是
(2, 2)(3, 3)否

2.3 规则三:维度缺失视为长度为1

在张量运算中,当两个数组的维度不一致时,系统会自动将缺失的维度视为长度为1。这一规则是广播机制的核心前提之一。
广播中的维度补全
例如,形状为 (3, 1) 的张量与形状为 (3,) 的张量进行运算时,后者在第二个维度上被视为 (3, 1)。
import numpy as np
a = np.array([[1], [2], [3]])    # shape: (3, 1)
b = np.array([1, 2, 3])          # shape: (3,)
c = a + b                        # b 被视为 (1, 3),再扩展为 (3, 3)
上述代码中,b 在第一个维度缺失,按规则视为长度为1,随后被广播扩展以匹配 a 的结构。
维度对齐逻辑
  • 从尾部维度向前逐一对齐
  • 若某维度长度为1或缺失,则可扩展至目标长度
  • 只有所有维度满足此条件,广播才合法

2.4 规则四:满足条件的数组可扩展隐式复制

在特定条件下,数组可通过隐式机制实现自动扩展与数据复制。这一特性常见于动态类型语言或具备运行时优化能力的编译器中。
触发条件分析
隐式复制通常需满足以下条件:
  • 数组当前容量不足以容纳新增元素
  • 分配策略允许动态扩容
  • 底层内存支持重新映射
代码示例与机制解析
arr := []int{1, 2, 3}
arr = append(arr, 4)
// 当底层数组满时,append 自动分配更大空间并复制原数据
上述代码中,append 函数检测到容量不足时,会创建新数组并将原数据复制过去,实现隐式扩展。扩容比例通常为1.25~2倍,以平衡性能与内存使用。
操作容量变化是否复制
append 元素至满数组翻倍是
追加至未满数组不变否

2.5 规则五:广播后形状取各维度最大值

广播机制中的形状推导
在数组运算中,当两个张量的形状不一致时,NumPy 的广播机制会自动扩展维度以完成计算。广播后的结果形状由各对应维度的最大值决定。 例如,形状为 (3, 1) 和 (1, 4) 的数组进行运算时,广播后的形状为 (3, 4)。
代码示例与分析

import numpy as np

a = np.ones((3, 1))      # 形状: (3, 1)
b = np.ones((1, 4))      # 形状: (1, 4)
c = a + b                # 广播后形状: (3, 4)

print(c.shape)           # 输出: (3, 4)
上述代码中,a 在第1维长度为3,b 在第0维长度为1,广播规则将两者扩展至各维度最大值,最终形状为 (3, 4)。
广播维度匹配规则
维度0维度1广播后形状
31(3, 4)
14(3, 4)

第三章:广播规则的典型应用场景

3.1 标量与数组的算术运算实战

在NumPy中,标量与数组的算术运算会自动将标量广播到数组的每一个元素上。这种机制简化了对大规模数据的批量操作。
基本运算示例
import numpy as np
arr = np.array([1, 2, 3, 4])
result = arr + 10
print(result)  # 输出: [11 12 13 14]
上述代码中,标量 `10` 被自动加到数组 `arr` 的每个元素上。该操作无需循环,由NumPy底层向量化实现,效率极高。
支持的运算类型
  • 加法(+):每个元素加标量
  • 减法(-):每个元素减标量
  • 乘法(*):每个元素乘标量
  • 除法(/):每个元素除以标量
所有运算均生成新数组,原数组保持不变,适用于数据预处理中的标准化、缩放等场景。

3.2 向量与矩阵间的高效扩展计算

在深度学习和科学计算中,向量与矩阵的扩展计算(broadcasting)是实现高效张量操作的核心机制。它允许不同形状的数组进行算术运算,而无需显式复制数据。
广播机制的基本规则
当两个数组的维度从后往前逐位比对时,满足以下任一条件即可广播:
  • 对应维度长度相等
  • 其中某一维度长度为1或缺失
实例演示:NumPy中的扩展加法
import numpy as np

# 向量 (3,) 与矩阵 (2, 3) 相加
a = np.array([[1, 2, 3], 
              [4, 5, 6]])  # shape: (2, 3)
b = np.array([10, 20, 30])  # shape: (3,)

result = a + b
print(result)
上述代码中,向量 b 沿行方向自动扩展,等价于将其复制两次形成 (2,3) 矩阵,再逐元素相加。该过程不实际复制内存,而是通过步长(stride)机制高效实现,显著提升性能并节省内存开销。

3.3 多维张量间的智能维度匹配

在深度学习框架中,多维张量的运算常涉及不同形状之间的兼容性问题。智能维度匹配机制通过广播(Broadcasting)规则自动扩展张量维度,使运算得以高效执行。
广播机制的核心原则
当两个张量进行逐元素运算时,系统从尾部维度开始对齐并比较:
  • 若对应维度相等,则直接匹配;
  • 若某一维度为1,则可沿该轴复制扩展;
  • 若任一维度不兼容且均不为1,则抛出形状错误。
代码示例:PyTorch中的自动匹配
import torch
a = torch.randn(4, 1, 3)    # 形状: (4, 1, 3)
b = torch.randn(      3)    # 形状: (3,)
c = a + b                    # 自动广播为 (4, 1, 3) + (1, 1, 3) → (4, 4, 3)
上述代码中,张量 b 在第0和第1维度被隐式扩展,与 a 实现逐元素加法。这种机制减少了显式内存复制,提升了计算效率。

第四章:常见广播错误与性能优化策略

4.1 维度不兼容导致的ValueError分析

在深度学习和数值计算中,张量操作要求参与运算的数组具有兼容的维度。当形状(shape)不匹配时,将触发 `ValueError`。
常见报错示例
import numpy as np
a = np.array([[1, 2], [3, 4]])      # 形状: (2, 2)
b = np.array([[1, 2, 3]])           # 形状: (1, 3)
c = a + b  # ValueError: operands could not be broadcast together with shapes (2,2) (1,3)
上述代码试图对两个形状不兼容的数组执行广播加法。NumPy 广播规则要求从尾部维度开始逐一对比,每个维度必须满足相等、或其中一方为1。
解决策略
  • 使用 reshape() 调整张量结构
  • 通过 np.expand_dims() 增加冗余维度
  • 检查数据预处理流程是否一致

4.2 避免隐式扩展带来的内存开销

在Go语言中,切片的隐式扩展常导致意外的内存分配,尤其在追加元素时触发容量翻倍策略,可能造成内存浪费。
切片扩容机制分析
当切片底层数组容量不足时,append操作会自动分配更大的数组。例如:

slice := make([]int, 5, 10)
for i := 0; i < 6; i++ {
    slice = append(slice, i)
}
// 容量从10翻倍至20,原数组被抛弃
上述代码中,第6次追加触发扩容,原10个单位内存将被丢弃,新分配20个单位,导致短暂双倍内存占用。
优化策略
  • 预估容量并使用make([]T, len, cap)显式指定
  • 批量操作前调用slice = append(make([]T, 0, expectedCap), slice...)
通过合理预分配,可避免多次重新分配与数据复制,显著降低内存开销。

4.3 使用reshape与newaxis主动控制广播

在NumPy中,广播机制允许不同形状的数组进行算术运算。但有时需主动调整维度以触发正确广播。`reshape` 和 `newaxis` 是两种核心工具。
使用 newaxis 插入新维度
通过 `np.newaxis` 可在指定位置插入长度为1的新轴,改变数组形状:
import numpy as np
a = np.array([1, 2, 3])        # 形状: (3,)
b = a[:, np.newaxis]           # 形状: (3, 1)
c = a[np.newaxis, :]           # 形状: (1, 3)
此操作使一维数组变为二维,便于与其他矩阵进行广播运算。
利用 reshape 灵活重塑结构
`reshape` 能重新定义数组维度,只要元素总数不变:
d = np.arange(6).reshape((2, 3))  # 变为 2×3 矩阵
e = d.reshape((6, 1))             # 变为列向量
结合广播规则,可实现高效向量化计算,避免显式循环,提升性能。

4.4 广播在图像处理中的高效应用实例

图像与滤波核的广播运算
在卷积操作中,广播机制允许将单通道滤波器(如边缘检测核)自动扩展到多通道图像上。例如,对一个形状为 (H, W, 3) 的 RGB 图像应用 (3, 3) 卷积核时,通过广播可避免显式复制权重,提升计算效率。

import numpy as np
# 模拟一个 5x5 彩色图像和 3x3 边缘检测核
image = np.random.rand(5, 5, 3)
kernel = np.array([[1, 0, -1],
                   [1, 0, -1],
                   [1, 0, -1]])  # 形状: (3, 3)

# 利用广播进行逐元素乘法(简化示例)
result = image[1:4, 1:4, :] * kernel[:, :, np.newaxis]
上述代码中,kernel[:, :, np.newaxis] 将核从 (3, 3) 扩展为 (3, 3, 1),使其能与 (3, 3, 3) 图像块进行广播乘法,实现跨通道统一处理而无需复制数据。
批量图像归一化
广播还广泛用于批量图像的均值标准化:
  • 输入:批量图像 shape (N, H, W, C)
  • 均值向量 shape (C,) 自动广播至所有空间位置和样本
  • 显著减少内存占用并加速预处理

第五章:总结与高阶学习建议

持续构建项目以巩固知识体系
真实场景下的项目实践是掌握技术的关键。建议每学习一项新技术后,立即构建一个最小可行项目。例如,在掌握 Go 语言基础后,可实现一个简单的 REST API 服务:

package main

import (
    "encoding/json"
    "net/http"
)

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

func userHandler(w http.ResponseWriter, r *http.Request) {
    user := User{ID: 1, Name: "Alice"}
    json.NewEncoder(w).Encode(user) // 返回 JSON 响应
}

func main() {
    http.HandleFunc("/user", userHandler)
    http.ListenAndServe(":8080", nil)
}
深入源码与参与开源社区
阅读优秀开源项目的源码能显著提升架构设计能力。推荐从 GitHub 上的热门项目如 gin-gonic/gin 或 hashicorp/consul 入手,重点关注其中间件机制与错误处理模式。
  • 定期提交 Issue 并尝试修复简单 Bug
  • 参与文档翻译或测试用例编写
  • 关注项目 CI/CD 流程配置(如 GitHub Actions)
系统性学习路径规划
下表列出进阶学习方向与对应资源建议:
学习领域推荐资源实践目标
分布式系统"Designing Data-Intensive Applications"实现简易版 Raft 协议
Kubernetes 编程KubeBuilder 官方教程开发自定义 Operator
流程图:技能进阶路径 基础知识 → 项目实战 → 源码分析 → 贡献开源 → 架构设计
关于AI开发方法论-以文档为索引的高质量协作开发:让一次现象描述精准命中几个代码块 对AI的编码规范进行约束 立即下载

相关推荐

Foxglove Studio实战:5步搞定自动驾驶数据可视化(附避坑指南)

本文详细介绍了如何使用Foxglove Studio高效搭建自动驾驶数据可视化工作流。通过五个核心步骤:环境准备、数据导入、面板搭建、交互分析与自动化集成,帮助开发者快速掌握这一专为机器人系统设计的开源平台。文章重点解析了其与ROS/ROS 2、MCAP等数据源的无缝对接,以及3D点云、多传感器融合、团队标注等核心功能,并附有实用的性能优化与避坑指南,旨在提升算法调试与团队协作效率。

d3e4f的博客 334

【Numpy广播机制深度解析】:掌握维度扩展的5大核心规则与实战技巧

掌握Numpy广播的维度扩展规则,轻松解决数组间运算不匹配难题。详解5大核心规则与适用场景,涵盖形状对齐、维度扩展等关键方法,提升数据处理效率。实战技巧助你灵活应用,值得收藏。

Instrulink的博客 874

别再为GEE注册发愁了!用谷歌Cloud Project,5分钟搞定谷歌地球引擎账户(保姆级图文)

本文提供2024最新版谷歌地球引擎(GEE)账户注册的保姆级教程,通过谷歌Cloud Project快速完成注册,5分钟极速通关。详细解析注册前的准备、分步图解流程、常见误区及解决方案,帮助用户避开90%的注册陷阱,直达GEE核心功能区。

weixin_42557830的博客 199

【Numpy广播机制深度解析】:掌握多维数组运算的5大核心规则

掌握Numpy的广播规则,高效实现多维数组运算。本文详解5大核心规则及适用场景,结合Numpy的广播规则多维数组示例,揭示自动扩展机制的关键优势,提升计算效率,值得收藏。

FuncInk的博客 731

Squareline Studio + LVGL实战:从Figma设计到MCU屏幕的UI开发一条龙(避坑中文显示)

本文详细介绍了使用Squareline Studio和LVGL实现从Figma设计到MCU屏幕UI开发的全流程,重点解决中文显示等常见问题。通过设计工具链搭建、设计稿转换、LVGL工程集成及性能优化等步骤,帮助开发者高效完成嵌入式GUI开发,提升开发效率。

weixin_29246195的博客 582

有限元缺陷:剪切锁死

有限元缺陷:剪切锁死

wsxww11的博客 5184

NumPy核心机制详解:视图、广播与向量化

数组计算是Python科学计算与数据处理的基石,NumPy作为核心库,其高效性源自底层的预编译C循环。理解视图与副本的内存共享机制,能帮助开发者避免修改源数据;广播机制则允许不同形状的数组直接运算,简化代码逻辑。向量化操作将Python循环替换为C级批处理,可使数值计算提速数十倍。在数据标准化、网格生成、距离矩阵计算等场景中,这些技术均发挥着关键作用。本文围绕NumPy的视图、广播、向量化等核心机制,结合实际案例剖析其工程实践价值。

weixin_33834075的博客 330

【180609】剑侠情缘_整套源码+地图编辑器(单机学习例子)

剑侠情缘_整套源码+地图编辑编(单机学习例子)完整源码下载地址:点击下载备用下载地址:点击下载

资源小站 6276

NumPy入门必读:环境配置、ndarray与广播机制详解

在Python科学计算与数据分析领域,NumPy作为最基础的数值计算库,其核心数据结构ndarray以高效的内存布局统一了数组运算的标准。理解数组的shape与dtype是掌握NumPy的第一步,而广播机制(broadcasting)则允许不同形状的数组自动扩展对齐,极大简化了逐元素运算。借助ufunc与向量化,原本需要循环处理的百万级数据可在毫秒级完成,显著提升工程效率。从创建等差数列常用的numpy.linspace,到矩阵运算中的行列式计算(np.linalg.det),NumPy贯穿数据清洗、统计分

weixin_33762130的博客 346

最小二乘拟合圆:使用拉格朗日乘子法

在本文中,我们将探讨如何使用拉格朗日乘子法来进行最小二乘拟合,并将其应用于拟合一个空间圆。首先,我们需要定义问题。给定一组二维或三维数据点,我们的目标是找到一个圆,使得这些数据点到圆的距离的平方和最小。为了找到最小值,我们需要计算拉格朗日函数的偏导数,并令其等于零。通过解决优化问题,我们可以找到最佳拟合的圆,以最小化数据点到圆的距离的平方和。其中,(x, y) 是圆心的坐标,r 是圆的半径,(xi, yi) 是数据点的坐标。其中,g(x, y, r) = 0 是约束条件,C 是常数,λ 是拉格朗日乘子。

TechProX的博客 473

fragstats:景观指数趋势分析

优快云@_养乐多_本文将介绍景观指数时间序列的趋势分析,包括趋势类型、斜率、截距等。以及景观指数突变分析所用的软件和 python 代码。结果如下图所示,

养乐多的博客 2857

PyTorch 2.3 张量运算:5个与NumPy矩阵API的关键差异解析

本文详细解析了PyTorch 2.3张量运算与NumPy矩阵API的五个关键差异,包括计算图与自动微分机制、设备感知与GPU加速、广播机制的高级实现、内存布局与视图机制以及批量操作与高级API。这些差异帮助开发者更高效地从科学计算过渡到深度学习开发,特别适合需要处理大规模矩阵运算和自动微分的场景。

weixin_34195364的博客 332

利用插件扩展 Qt 应用程序

不仅 Qt 本身可以通过插件进行扩展,而且 Qt 应用程序也可以通过插件来扩展,这需要应用程序使用 `QPluginLoader` 检测和加载插件。

青春不老,奋斗不止! 1万+

NumPy数组维度与形状详解:从ndim、shape到数据操作实战

在Python数据科学和机器学习领域,理解多维数组(ndarray)的结构是进行高效数据处理的基础。多维数组的核心属性是其维数(ndim)和形状(shape),它们共同定义了数据在内存中的组织方式。ndim表示数组的维度数量,如标量、向量、矩阵或更高维张量;shape则是一个元组,精确描述了每个维度上的元素个数。掌握这些概念对于数据验证、索引切片、广播机制以及数组重塑等操作至关重要,能有效避免常见的ValueError和维度不匹配错误。在实际应用中,无论是图像处理、CSV文件加载还是模型输入预处理,准确获取

weixin_34293911的博客 412

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【NumPy数组操作优化秘籍】:揭秘高效科学计算背后的5大核心技巧

掌握NumPy数组操作优化技巧,提升科学计算效率。本文揭秘向量化运算、广播机制、内存布局优化等5大核心方法,适用于数据处理与机器学习场景,显著加速数组运算。高效简洁,值得收藏。

QuickCode的博客 730

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PyTorch torch.flatten() 与 NumPy flatten() 对比:3大差异与5个深度学习场景应用

本文深入对比了PyTorch的torch.flatten()与NumPy的flatten()函数在深度学习中的3大核心差异,包括维度控制、内存处理和返回值类型。通过5个典型场景(如CNN过渡、损失函数处理等)的代码示例,帮助开发者根据具体需求选择最佳展平方法,提升模型开发效率。特别适合使用Python进行科学计算和深度学习的开发者参考。

weixin_33692284的博客 351

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

动手学深度学习(d2l-zh)张量数据操作全解析:从创建、运算到广播与内存管理

本篇以《动手学深度学习》中文版(d2l-zh)预备知识章节中的《数据操作》([chapter_preliminaries/ndarray_origin.md](https://link.gitcode.com/i/77ecfba8a24fc5cde36b792dce179062),对应中文版 [chapter_preliminaries/ndarray.md](https://link.gitco

gitblog_00167的博客 250

Python AI入门必修:NumPy与Pandas核心操作与实战避坑

Python是AI开发的主流语言,而数据分析与预处理是每个AI项目的基础环节。NumPy和Pandas作为Python数据科学的两大核心库,分别承担着高性能数值计算与表格化数据处理的重任。NumPy通过连续内存存储、广播机制和向量化计算,让大规模数值运算比原生列表快几十倍;Pandas则提供DataFrame这一直观的表格结构,将数据清洗变成类似Excel的操作。在真实业务中,从读取CSV、处理缺失值、重复项到按组聚合统计,再到将处理结果转换为NumPy数组输入模型,这两个库贯穿AI数据处理全流程。对于零基

weixin_32932149的博客 191

Worktool:免Root企业微信机器人,3步跑通自动加好友和智能客服

Worktool 是款免Root的企业微信机器人,主打企业微信自动化:加人、群发、回消息这些重复活,交给它自己跑。 ## 从一个场景说起 每天上午第一件事,是打开企业微信逐个给新客户发验证消息。一个群五十人,你得点五十次,手指点酸了还没发完。加完人还得挨个回咨询,谁先问谁先等。忙到下午,计划里的活一件没动。其实这些活没几样,就是重复,偏偏最费时间。 ## 你用它做这几件事 把 WorkTo

gitblog_00554的博客 769

实验2:深度学习基础(PyTorch 基础与螺旋数据分类)

的输出"看不懂"。起初以为它和rand一样生成随机数,查文档后明白empty只分配内存、不初始化,打印的是内存残留值,需要随机初始化时应使用rand/randn。反向传播前忘记。PyTorch 的梯度默认会累加,因此每个 epoch 反向传播前必须先清空上一轮梯度,否则梯度会跨批次叠加导致更新错误,通过对照教程理解了"清零→反传→更新"三步的必要性。绘图库需要先下载。教程的plot_dataplot_model来自第三方绘图脚本,必须先运行笔记本最前面的!wget下载格;

Morwen_OUC的博客 519

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理出发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

weixin_45747731的博客 296

Kronecker积、Khatri-Rao积与Hadamard积:高维数据处理的核心矩阵运算

在数据处理与机器学习领域,矩阵运算是构建模型和分析数据的基石。从基础的矩阵乘法出发,当面对高维张量、大规模系统建模或复杂模式组合时,三种特殊的矩阵运算——Kronecker积、Khatri-Rao积和Hadamard积——展现出不可替代的技术价值。Kronecker积通过块缩放实现维度膨胀,是构建大规模系统方程和定义卷积操作的数学基础;Khatri-Rao积作为列向的压缩组合,是张量CP分解的核心,能高效地将高维数据摊平;而Hadamard积作为直观的逐元素乘,广泛应用于图像处理和神经网络梯度计算。理解这三

weixin_30267785的博客 431

深度学习111

x.shape 用来访问张量的形状和张量元素中的总数, x.numel()用来表示元素个数。还可以用torch.tensor来指定特定形状特定取值,还可以X = torch.arange(12,dtype=torch.float32).reshape((3,4)).用torch.cat可以把两个张量合并在一起,torch.cat((x,y)),dim=0)是指x与y相结合,且维度为1.用X.sum() 求和,而且对两个向量进行运算时,会自动按行列的最大值进行运算。y: 真实标签 (batch_size,)

m0_61146090的博客 625
上一篇: Pipeline进阶必看,手把手教你构建可复用的自定义转换器
下一篇: PyQt5中QThread信号传参的那些坑(你不可不知的类型安全机制)
Algorhythm
博客等级 码龄1年 148粉丝 2217原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值