torch.Tensor的常见操作

参考:d2l


torch.Tensor是pytorch运算的基本数据类型,Tensor相比较于ndarray而言,最大优势在于可以在GPU上跑和自动微分。而对Tensor的操作包括但不限于以下几种:

请添加图片描述

详细见下:

'''torch.Tensor类型的基本使用'''

# 集中常见的初始化torch.Tensor的方法

import torch

# one dimension
x = torch.arange(12)
print(x, x.shape, x.dtype, x.numel(), )

# reshape
y = x.reshape(3, -1)
print(y)

# multi dimensions
a = torch.zeros((2, 3, 4))
b = torch.ones((2, 3, 4))
c = torch.randn((2, 3, 4))
d = torch.tensor([[2, 2, 2], [3, 3, 3]])
print(a, '\n', b, '\n', c, '\n', d)


# 运算符: 运算符的运算是按照元素进行的
e = a + b

# concat 拼接,指定拼接的dim
f = torch.cat((a, b), dim=0)
print(f)

# sum计算求和统计量
g = b.sum()
print(g)

# 判断位置是否相同,常用于做mask
k = a == b
print(k)

# 广播机制,在进行四则运算的时候,当矩阵形状不同时,会先扩展为形状相同再进行计算。但是很多情况下我并不知道怎么使用。常用的是矩阵加一个标量。
h = torch.arange(6).reshape(3, 2)
i = torch.arange(2).reshape(1, 2)
print(h)
print(i)
j = h+i
print(j)

# 切片和索引。同python中的list使用
a[0, 0, 0:3] = 7
print(a)

# 我们使用id()进行内存定位。Y=[expresion Y]会重新分配Y的内存;Y[:]=和Y+=都不会重新分配内存。建议多用后者,这样做可以减少内存开销。
before = id(y)
y = y + 1
print(id(y) == before)

before = id(y)
y += 1
print(id(y) == before)

before = id(y)
y[:] = y + 1
print(id(y) == before)

# 类型转换
l = x.numpy()
m = torch.tensor(l)
print(type(l), type(m))

# 提出tensor 的标量
n = torch.tensor([[1.]])
print(type(n.item()), type(float(n)))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值