pytorch 入门1-tensor 广播 view reshape

  • tensor 的四则运算
  • broadcast
python 复制代码
import torch
import numpy as np
# 张量tensor  随机初始化
x = torch.rand(4,3)
print(x)
y =torch.randn(4,3)
print(y)
python 复制代码
# 初始化全零 张量
a = torch.zeros((4,4),dtype=torch.long)
print(a)
#初始化全一 张量
b = torch.ones(4,4)
print(b)
c = torch.tensor(np.ones((2,3),dtype='int32'))
print(c)

常见的构造Tensor的方法:

python 复制代码
# tensor 的基本操作
# 加法
print(a+b)
# add_ = replace in 操作
y = a.add_(3)
print(y)

out:

python 复制代码
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
tensor([[3, 3, 3, 3],
        [3, 3, 3, 3],
        [3, 3, 3, 3],
        [3, 3, 3, 3]])
python 复制代码
#索引操作
x = torch.rand(3,4)
print(x)
# 第二列
print(x[:,1])
# 第二行
print(x[1,:])
python 复制代码
#维度变换 张量的维度变换常见的方法有torch.view()和torch.reshape()
x = torch.randn(4,3)
y = x.view(12)
z = x.view(-1,6)
print(x.size(),y.size(),z.size())
print(x)
print(z)
# 最后x tensor size 没有发生改变
#view()仅仅是改变了对这个张量的观察角度
print(x)
python 复制代码
#我们希望原始张量和变换后的张量互相不影响。
#为了使创建的张量和原始张量不共享内存,我们需要使用第二种方法torch.reshape(), 
#同样可以改变张量的形状,但是此函数并不能保证返回的是其拷贝值,所以官方不推荐使用
a = torch.randn(4,4)
b = a.reshape(2,8)
print(a)
print(b)
python 复制代码
#广播机制
#当对两个形状不同的 Tensor 按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个 Tensor 形状相同后再按元素运算。
x = torch.arange(1,4).view(1,3)
print(x)
y = torch.arange(1,5).view(4,1)
print(y)
print(x+y)
相关推荐
陈广亮23 分钟前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬32 分钟前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia1 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区1 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两4 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
敏编程4 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪4 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232554 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星4 小时前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能