torch的常用数据操作
常用方法
- torch.arange(num[, dtype=torch.float32]) # 返回一个数据种类dtype且长度num的一维向量
- .shape # 返回张量的形状
- .numel() # 返回张量的元素个数
- .reshape(tuple) # tuple整数元组;返回一个形状为tuple的张量
- torch.zeros(tuple) # 返回一个元素值全为0且为tuple的张量
- torch.ones(tuple) # 返回一个元素值全为1且为tuple的张量
- torch.randn(tuple) # 返回一个元素tuple且其中的每个元素都从均值为0、标准差为1的标准⾼斯分布(正态分布)中随机采样的张量
- torch.tensor(array) # array数组;返回array的张量
- torch.zeros_like(tensor) # tensor张量;返回与tensor张量形状一样的0张量
运算符
- 和python运算符差不多( + - * / ** > < >= <= == 等)
- torch.exp(tensor) # tensor张量;返回e的tensor次方的张量
- torch.cat(tensorTuple ,dim = 0) # tensorTuple张量元组;dim已多少维标准;返回拼接的之后的张量
- .sum() # 对张量所有元素求和
广播机制
- 说白了就是比较小的张量按整数比例扩大, 扩大到与大的张量形状相同时,再进行运算
索引与切片
- 与Python列表类似
- [: , : ] # 冒号:是对此维进行选择;逗号,是区分不同维
节省内存
- id(Ele) # 可以获取元素的地址
- X[ : ] = X + Y或X += Y来减少操作的内存开销
转换
- .numpy() # 转换为numpy数组
- torch.tensor(numpy) # numpy数组转化为torch张量
- .item(), float(tensor), int(tensor) # 将⼤小为1的张量转换为Python标量
torch的常用数据操作实例
print(torch.arange(8))
print(torch.arange(5, dtype = torch.float32))
y = torch.tensor([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]])
print(y.shape)
print(y.numel())
print(y.reshape(2, 8))
print(torch.zeros(3, 10))
print(torch.ones(4, 9))
print(torch.randn(5, 5))
y = torch.tensor([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]])
print(y)
print(torch.zeros_like(y))
a = torch.arange(12).reshape(3, 4)
b = torch.tensor([[ 1, 2, 2, 3], [ 5, 6, 6, 7], [ 8, 9, 10, 11]])
print(a + b, a - b, a * b, a / b , a ** b)
a = torch.arange(12).reshape(3, 4)
print(torch.exp(a))
c = torch.arange(27).reshape(3, 3, 3)
print(torch.cat((c , c) ,dim = 0), torch.cat((c , c) ,dim = 1), torch.cat((c , c) ,dim = 2))
d = torch.arange(27).reshape(3, 3, 3)
print(d.sum())
a = torch.arange(27).reshape((3, 1, 9))
b = torch.arange(3).reshape((3, 1))
print(a + b)
a = torch.arange(81).reshape((3, 3, 9))
print(a, a[: : ], a[0 : 2, 1: 2, 5:8])
a = torch.arange(9).reshape((3, 3))
ida = id(a)
b = torch.arange(9).reshape((3, 3))
print(ida)
a[ : ] = a + b
print(id(a) == ida)
a += b
print(id(a) == ida)
t = torch.arange(12).reshape((4, 3))
np = t.numpy()
print(np)
print(torch.tensor(np))
one = torch.tensor([1])
print(one.item(), float(one), int(one) )