jupyterlab 学习记录——基于torch的数据操作

创建张量

import torch #导入torch类

x=torch.arange(N)  #使用arrange创建张量

x.shape #访问张量形状

x.numel() #访问张量元素总数

x.reshape(r,c)  #改变张量形状(-1可代替剩余维度)

x=torch.ones((n1,n2,n3…))  #创建全0或全1张量

x=torch.zeros((n1,n2,n3…))

x= randn(n1,n2,n3)  #创建随机采样张量(从均值为0,标准差为1的正态分布中采样)

x=torch.tensor([[1,2,3],[4,5,6],[7,8,9]]) #创建自定义张量

dir() #查询方法参数

运算符

x=torch.tensor([])

y=torch.tensor([])

x+y,x-y,x*y,x/y,x**y #按元素运算的加减乘除幂运算

torch.exp(x) #对x进行按元素指数运算

torch.cat((x,y),dim = 0) #沿行连接张量(沿行为字面意思)

torch.cat((x,y),dim = 1) #沿列连接张量(沿列为字面意思)

x==y #暗元素判断并标记bool形成新的张量

x.sum() #对张量中所有元素求和

广播机制(形状不同的张量按元素操作)

a=torch.arange(3).reshape(3,1) #a张量为列向量

b=torch.arange(2).reshape(1,2) #b张量为行向量

a+b #a列向量复制与b列数相同,b行向量复制与a行数相同,再按元素相加

#结果为tensor([[0],[1],[2]])+tensor([[0,1]])=tensor([[0,1],[1,2],[2,3]])

索引和切片

#[]一般内部为元素,[[]]中为某一行元素

#可按索引访问张量元素,顺序号第一个为0,倒序号最后一个为-1,[n:m]为第n+1个但不包含m+1个元素,[n,m]代表第n+1行、m+1列元素

节省内存操作

before=id(Y)

Y=X+Y

id(Y) == before

#结果为False

#计算Y=X+Y时会创建新张量,并为新张量创建新内存,增加了内存消耗

before=id(Y)

Y[:]=X+Y #或Y +=X

id(Y) == before

#结果为True

#使用Y[:]或+=,无需创建新张量,减少了内存消耗

更换张量对象

X=torch.arange(12).reshape(3,4)

A=X.numpy() #更换为numpy张量

B=torch.tensor(A) #更换为torch张量

type(A),type(B) #结果为numpy.ndarray,torch.Tensor

a=torch.tensor([1.4])

a.item() #将大小为1的张量转换为Python标量

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值