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

Day55 PythonStudy

@浙大疏锦行

import torch # 创建原始张量 a = torch.tensor([[10], [20], [30]]) # 形状: (3, 1) b = torch.tensor([1, 2, 3]) # 形状: (3,) result = a + b # 广播过程 # 1. b补全维度: (3,) → (1, 3) # 2. a扩展列: (3, 1) → (3, 3) # 3. b扩展行: (1, 3) → (3, 3) # 最终形状: (3, 3) print("原始张量a:") print(a) print("\n原始张量b:") print(b) print("\n广播后a的值扩展:") print(torch.tensor([[10, 10, 10], [20, 20, 20], [30, 30, 30]])) # 实际内存中未复制,仅逻辑上扩展 print("\n广播后b的值扩展:") print(torch.tensor([[1, 2, 3], [1, 2, 3], [1, 2, 3]])) # 实际内存中未复制,仅逻辑上扩展 print("\n加法结果:") print(result)

原始张量a:
tensor([[10],
[20],
[30]])

原始张量b:
tensor([1, 2, 3])

广播后a的值扩展:
tensor([[10, 10, 10],
[20, 20, 20],
[30, 30, 30]])

广播后b的值扩展:
tensor([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])

加法结果:
tensor([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])

# 创建原始张量 a = torch.tensor([[[1], [2]], [[3], [4]]]) # 形状: (2, 2, 1) b = torch.tensor([[10, 20]]) # 形状: (1, 2) # 广播过程 # 1. b补全维度: (1, 2) → (1, 1, 2) # 2. a扩展第三维: (2, 2, 1) → (2, 2, 2) # 3. b扩展第一维: (1, 1, 2) → (2, 1, 2) # 4. b扩展第二维: (2, 1, 2) → (2, 2, 2) # 最终形状: (2, 2, 2) result = a + b print("原始张量a:") print(a) print("\n原始张量b:") print(b) print("\n广播后a的值扩展:") print(torch.tensor([[[1, 1], [2, 2]], [[3, 3], [4, 4]]])) # 实际内存中未复制,仅逻辑上扩展 print("\n广播后b的值扩展:") print(torch.tensor([[[10, 20], [10, 20]], [[10, 20], [10, 20]]])) # 实际内存中未复制,仅逻辑上扩展 print("\n加法结果:") print(result)

原始张量a:
tensor([[[1],
[2]],

[[3],
[4]]])

原始张量b:
tensor([[10, 20]])

广播后a的值扩展:
tensor([[[1, 1],
[2, 2]],

[[3, 3],
[4, 4]]])

广播后b的值扩展:
tensor([[[10, 20],
[10, 20]],

[[10, 20],
[10, 20]]])

加法结果:
tensor([[[11, 21],
[12, 22]],

[[13, 23],
[14, 24]]])

# 创建原始张量 a = torch.tensor([[1, 2], [3, 4]]) # 形状: (2, 2) b = 10 # 标量,形状视为 () # 广播过程 # 1. b补全维度: () → (1, 1) # 2. b扩展第一维: (1, 1) → (2, 1) # 3. b扩展第二维: (2, 1) → (2, 2) # 最终形状: (2, 2) result = a + b print("原始张量a:") print(a) # 输出: # tensor([[1, 2], # [3, 4]]) print("\n标量b:") print(b) # 输出: 10 print("\n广播后b的值扩展:") print(torch.tensor([[10, 10], [10, 10]])) # 实际内存中未复制,仅逻辑上扩展 print("\n加法结果:") print(result) # 输出: # tensor([[11, 12], # [13, 14]])

原始张量a:
tensor([[1, 2],
[3, 4]])

标量b:
10

广播后b的值扩展:
tensor([[10, 10],
[10, 10]])

加法结果:
tensor([[11, 12],
[13, 14]])

# 创建原始张量 a = torch.tensor([[[1, 2], [3, 4]]]) # 形状: (1, 2, 2) b = torch.tensor([[5, 6]]) # 形状: (1, 2) # 广播过程 # 1. b补全维度: (1, 2) → (1, 1, 2) # 2. b扩展第二维: (1, 1, 2) → (1, 2, 2) # 最终形状: (1, 2, 2) result = a + b print("原始张量a:") print(a) # 输出: # tensor([[[1, 2], # [3, 4]]]) print("\n原始张量b:") print(b) # 输出: # tensor([[5, 6]]) print("\n广播后b的值扩展:") print(torch.tensor([[[5, 6], [5, 6]]])) # 实际内存中未复制,仅逻辑上扩展 print("\n加法结果:") print(result) # 输出: # tensor([[[6, 8], # [8, 10]]])

原始张量a:
tensor([[[1, 2],
[3, 4]]])

原始张量b:
tensor([[5, 6]])

广播后b的值扩展:
tensor([[[5, 6],
[5, 6]]])

加法结果:
tensor([[[ 6, 8],
[ 8, 10]]])

import torch # A: 批量大小为2,每个是3×4的矩阵 A = torch.randn(2, 3, 4) # 形状: (2, 3, 4) # B: 单个4×5的矩阵 B = torch.randn(4, 5) # 形状: (4, 5) # 广播过程: # 1. B补全维度: (4, 5) → (1, 4, 5) # 2. B扩展第一维: (1, 4, 5) → (2, 4, 5) # 矩阵乘法: (2, 3, 4) @ (2, 4, 5) → (2, 3, 5) result = A @ B # 结果形状: (2, 3, 5) print("A形状:", A.shape) # 输出: torch.Size([2, 3, 4]) print("B形状:", B.shape) # 输出: torch.Size([4, 5]) print("结果形状:", result.shape) # 输出: torch.Size([2, 3, 5])

A形状: torch.Size([2, 3, 4])
B形状: torch.Size([4, 5])
结果形状: torch.Size([2, 3, 5])

# A: 批量大小为3,每个是2×4的矩阵 A = torch.randn(3, 2, 4) # 形状: (3, 2, 4) # B: 批量大小为1,每个是4×5的矩阵 B = torch.randn(1, 4, 5) # 形状: (1, 4, 5) # 广播过程: # B扩展第一维: (1, 4, 5) → (3, 4, 5) # 矩阵乘法: (3, 2, 4) @ (3, 4, 5) → (3, 2, 5) result = A @ B # 结果形状: (3, 2, 5) print("A形状:", A.shape) # 输出: torch.Size([3, 2, 4]) print("B形状:", B.shape) # 输出: torch.Size([1, 4, 5]) print("结果形状:", result.shape) # 输出: torch.Size([3, 2, 5])

A形状: torch.Size([3, 2, 4])
B形状: torch.Size([1, 4, 5])
结果形状: torch.Size([3, 2, 5])

# A: 批量大小为2,通道数为3,每个是4×5的矩阵 A = torch.randn(2, 3, 4, 5) # 形状: (2, 3, 4, 5) # B: 单个5×6的矩阵 B = torch.randn(5, 6) # 形状: (5, 6) # 广播过程: # 1. B补全维度: (5, 6) → (1, 1, 5, 6) # 2. B扩展第一维: (1, 1, 5, 6) → (2, 1, 5, 6) # 3. B扩展第二维: (2, 1, 5, 6) → (2, 3, 5, 6) # 矩阵乘法: (2, 3, 4, 5) @ (2, 3, 5, 6) → (2, 3, 4, 6) result = A @ B # 结果形状: (2, 3, 4, 6) print("A形状:", A.shape) # 输出: torch.Size([2, 3, 4, 5]) print("B形状:", B.shape) # 输出: torch.Size([5, 6]) print("结果形状:", result.shape) # 输出: torch.Size([2, 3, 4, 6])

A形状: torch.Size([2, 3, 4, 5])
B形状: torch.Size([5, 6])
结果形状: torch.Size([2, 3, 4, 6])

http://www.jsqmd.com/news/184513/

相关文章:

  • 控制环路补偿网络设计:基于波特图的完整示例
  • Keil uVision5下载+Pack安装:构建完整开发环境项目应用
  • Qwen3-VL快递面单处理:模糊图像信息恢复与录入
  • Qwen3-VL监控华为云ModelArts作业队列
  • Qwen3-VL支持UltraISO注册码生成?AI破解风险警示
  • Qwen3-VL识别黑板板书内容同步为数字笔记
  • Qwen3-VL网页推理功能上线,无需本地部署即可体验
  • Qwen3-VL解析BML Full-Stack全流程建模
  • Claude Code 开发者低成本实战:如何用 LLM API 构建高性价比的 AI 编程工作流(2026年)
  • 实战案例:解决JLink驱动连接STM32时序问题
  • Qwen3-VL识别验证码图片机制探讨(仅限合法场景)
  • 实际电路中波特图测试注意事项:新手教程
  • Qwen3-VL支持MoE架构,边缘到云端全场景覆盖
  • Keil5添加文件配置:工业控制系统的手把手教程
  • Qwen3-VL将PPT截图转换为演讲稿大纲
  • 基于微信小程序的家政服务与互助平台【源码文末联系】
  • Qwen3-VL识别微PE官网界面:系统工具智能化操作演示
  • Qwen3-VL监控Milvus向量数据库性能指标
  • Qwen3-VL分析TensorBoard训练曲线调参建议
  • ARM Cortex-M芯片支持包下载指南:Keil5环境配置完整示例
  • Qwen3-VL解析Kaggle竞赛页面规则说明
  • 温度传感模拟电路设计中的元件对照实例
  • Qwen3-VL与纯文本大模型融合:实现无损多模态理解
  • Qwen3-VL图像转HTML/CSS/JS实战:AI自动生成前端代码
  • STM32 HAL库对接LVGL事件处理机制详解
  • 一文读懂 TDengine 全家桶:每个组件都是做什么的?
  • Qwen3-VL读取维普期刊资源整合服务平台记录
  • ARM架构快速入门:核心要点一文掌握
  • Qwen3-VL识别Jenkins控制台输出错误原因
  • Qwen3-VL读取DeepSpeed配置文件优化训练