news 2026/7/1 23:13:06

Day55 PythonStudy

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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])

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/28 21:45:44

Qwen3-VL解析NASA Astrophysics Data System条目

Qwen3-VL 解析 NASA 天体物理文献:让 AI 读懂科学 在天文学研究中,一个博士生可能需要花上数周时间,只为从几十篇论文的图表里提取出一组关键数据。这些论文大多来自 NASA 的天体物理数据系统(ADS),全球最重…

作者头像 李华
网站建设 2026/6/28 23:29:51

Qwen3-VL将PPT截图转换为演讲稿大纲

Qwen3-VL如何将PPT截图智能转化为演讲稿大纲 在现代办公场景中,我们经常面临一个看似简单却耗时费力的任务:把一份结构清晰但内容密集的PPT转换成适合口头表达的演讲稿。尤其是当这些幻灯片来自不同人、风格各异、图文混排复杂时,手动逐页整理…

作者头像 李华
网站建设 2026/6/25 15:32:26

Qwen3-VL解析BML Full-Stack全流程建模

Qwen3-VL 与 BML Full-Stack:重塑多模态建模的边界 在智能技术加速渗透日常的今天,一个现实问题日益凸显:如何让强大的AI模型真正“可用”?不是仅限于实验室中的演示,也不是依赖高配GPU和复杂环境配置的“专家特权”&a…

作者头像 李华
网站建设 2026/6/30 3:00:53

Qwen3-VL读取百度飞桨AI Studio算力消耗

Qwen3-VL在百度飞桨AI Studio上的算力使用与多模态实践 在智能开发门槛不断降低的今天,一个开发者只需点击几下鼠标,就能运行拥有数十亿参数的视觉-语言大模型。这种变化的背后,是国产大模型技术与云端AI平台深度协同的结果。以通义千问团队推…

作者头像 李华
网站建设 2026/6/26 11:40:29

Qwen3-VL解析Kaggle竞赛页面规则说明

Qwen3-VL如何“读懂”Kaggle竞赛页面? 在数据科学竞赛的世界里,Kaggle早已成为全球开发者和研究者的竞技场。然而,真正参与过比赛的人都知道:比建模更耗时的,往往是读完那几十页密密麻麻的比赛规则。 滚动条拉到底都未…

作者头像 李华
网站建设 2026/6/28 23:23:28

ST-Link ARM仿真器时钟配置:精准调试系统时序

ST-Link时钟配置实战:如何让调试不再“卡顿”?你有没有遇到过这样的场景?代码明明逻辑正确,但一进调试模式就断连;变量刷新慢得像幻灯片,单步执行要等半秒才响应;甚至设置个断点,系统…

作者头像 李华