张量(Tensor)基础操作


PyTorch中,Tensor(张量)时操作数据的主要工具,它是一个包含单一类型的多维矩阵,与NumPy数组的形式类似,也共享底层内存位置。优点在于Tensor可以在GPU进行运算,亦可以实现自动梯度求解等操作。
这篇blog将介绍PyTorch框架下Tensor的一些基本操作。
头文件
1 | import torch |
张量初始化
可以通过直接初始化、从Numpy数组中初始化与从其它tensor中初始化来创建一个tensor
1 | # 直接初始化 |
效果
1 | tensor([[1., 2.], |
查看张量属性
1 | tensor = torch.randn((3, 4)) |
效果
1 | tensor([[ 0.1958, -0.3580, -0.3055, 0.6545], |
张量基本操作
将张量传递到GPU加速计算
1 | if torch.cuda.is_available(): |
效果
1 | yes |
利用索引对张量进行剪裁、批量修改等操作
1 | print(tensor[0], tensor[:, 0], tensor[..., -1]) |
效果
1 | tensor([ 0.1958, -0.3580, -0.3055, 0.6545], device='cuda:0'), |
在不同维度对张量进行拼接
1 | t1 = torch.cat([tensor, tensor, tensor], dim=1) |
效果
1 | (tensor([[ 0.1958, 0.0000, -0.3055, 0.6545, 0.1958, 0.0000, -0.3055, 0.6545, |
tips: dim=0代表最高维度,dim增加,维数依次降低
线性运算
1 | x = torch.randn(4, 4) |
效果
1 | tensor([[ 0.4628, 0.6459, -0.8538, 0.2622], |
将位于不同设备的张量进行运算时,会发生错误
1 | y = tensor.matmul(x.T) |
效果
1 | --------------------------------------------------------------------------- |
对张量求和,会产生一个1x1张量,可以利用tensor.item()
将1x1张量转化为标量
1 | agg = tensor.sum() |
效果
1 | (0.3755984306335449, float) |
张量与np数组共享底层内存位置,改变一个将影响另一个
1 | t = torch.ones(5) |
效果
1 | tensor([1., 1., 1., 1., 1.]), array([1., 1., 1., 1., 1.], dtype=float32) |
更多
从PyTorch官方文档了解更多tensor操作