x = torch.arange(12)#使用 arange 创建一个行向量 x 也称为张量x
x.shape#访问张量(沿每个轴的长度)的形状#可以用x.reshape(-1,4)或x.reshape(3,-1)来取代x.reshape(3,4) 自动计算出维度
X = x.reshape(3,4)#转换为形状为(3,4)的矩阵
torch.zeros((2,3,4))#创建一个形状为(2,3,4)的张量,其中所有元素都设置为0
torch.ones((2,3,4))#创建一个形状为(2,3,4)的张量,其中所有元素都设置为1
torch.randn(3,4)#创建一个形状为(3,4)的张量,其中的每个元素都从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样。
torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])#最外层的列表对应于轴0,内层的列表对应于轴1#生成3*4的,每个元素为float的张量
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]])#沿行(轴-0,形状的第一个元素) 和按列(轴-1,形状的第二个元素)连结两个矩阵
torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)
a = torch.arange(3).reshape((3,1))#3*1张量
b = torch.arange(2).reshape((1,2))#1*2张量#通过广播机制,将a,b张量扩展为形状相同的张量,进行相加
a + b
#节省内存#形状与Y相同的矩阵,元素全为0
Z = torch.zeros_like(Y)print('id(Z):',id(Z))
Z[:]= X + Y
print('id(Z):',id(Z))#Z的地址并没有变
X += Y#也不会增大内存开销#torch张量和numpy数组将共享它们的底层内存,相互转变十分简单
A = X.numpy()
B = torch.tensor(A)type(A),type(B)#(numpy.ndarray, torch.Tensor)
a = torch.tensor([3.5])
a, a.item(),float(a),int(a)#大小为1的张量,转变为python标量