动手学pytorch--2.1数据操作

在jupyter notebook上运行更佳

import torch
x = torch.arange(0, 24, dtype=torch.float32) # 创建一个tensor
x = x.reshape(4, 6) # 将其改变形状
x.shape # 输出他的形状
x.numel() # 计算x中所有的元素个数
torch.zeros(2,3,4) # 创建一个全0的矩阵张量
torch.ones(2,3,4) # 全1的
# 每个元素都从均值为0 标准差为1的高斯分布(正态分布)
torch.randn(3,4)
x = torch.tensor([1.0,2,4,8])
y = torch.tensor([2.0,3,5,9])
x + y,x - y, x / y,x * y , x ** y 
# 按元素方式计算
torch.exp(x)
X = torch.arange(12, dtype=torch.float32).reshape((3,4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
X,Y,torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1) # dim=0是竖方向连接 dim=1是横方向的连接

X,Y,X == Y, X!= Y, X < Y, X <= Y, X > Y, X >= Y # 矩阵对应元素 比较运算
# 求和  0表示竖方向的相加 1表示横方向上相加 没有dim则表示全部相加
X.sum(dim=0),Y.sum(dim=0),X.sum(dim=1),Y.sum(dim=1),X.sum(),Y.sum()
# 广播机制
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
a, b
a+b # 两个矩阵都广播为一个更大的3*2的矩阵
# 索引和切片 与numpy类似
X[-1],X[1:3] # 倒数第一行 第二行和第三行
X[0:1] = 9 # 把第一行元素全变成9
X
X[0:2] = 9 # 把第2行元素全变成9
X
X[0:2,1] = 9 # 把第1,2行元素的第2列元素全变成9
X
X[0:2,2] = 4 # 把第1,2行元素的第2列元素全变成9
X
# 如果在后续计算中没有重复使用X, 我们也可以使用X[:] = X + Y或X += Y来减少操作的内存开销。
Z = torch.zeros_like(Y)
print('id(Z):', id(Z))
Z[:] = X + Y
print('id(Z):', id(Z))
# 转换为其他Python对象
A = X.numpy()
B = torch.tensor(A)
type(A),type(B)
# 将numpy对象转换成tensor对象
a = torch.tensor([3.5])
a, a.item(), float(a), int(a)

总结

# 总结: 张量的创建 torch.arange torch.zeros torch.ones torch.randn(正太分布) 
    # 输出张量的形状size 改变形状reshape view 元素数numel 元素总和sum(dim=0 表示竖方向) 
    # 张量的运算 比较 是逐元素的
    # 广播 索引和切片 
    # 内存
    # numpy和tensor类型的转换与检查 x.numpy torch.tensor()

你可能感兴趣的:(pytorch,深度学习,pytorch,人工智能,python)