张量的英文是Tensor,它是PyTorch里面基础的运算单位,与Numpy的ndarray相同都表示的是一个多维的矩阵。 与ndarray的最大区别就是,PyTorch的Tensor可以在 GPU 上运行,而 numpy 的 ndarray 只能在 CPU 上运行,在GPU上运行大大加快了运算速度。
torch.rand(x,y)
x = torch.rand(2, 3)
--------------------------------
tensor([[0.6904, 0.7419, 0.8010],
[0.1722, 0.2442, 0.8181]])
--------------------------------
y=torch.rand(2,3,4,5)
print(y.size())
--------------------------------
torch.Size([2, 3, 4, 5])
--------------------------------
scalar =torch.tensor(3.1433223)
print(scalar)
#打印标量的大小
scalar.size()
--------------------------------
对于标量,我们可以直接使用 .item() 从中取出其对应的python对象的数值
tensor.item()
32位浮点型:torch.FloatTensor (默认)
64位整型:torch.LongTensor
32位整型:torch.IntTensor
16位整型:torch.ShortTensor
64位浮点型:torch.DoubleTensor
使用numpy方法将Tensor转为ndarray
a = torch.randn((3, 2))
# tensor转化为numpy
numpy_a = a.numpy()
print(numpy_a)
numpy转化为Tensor
torch_a = torch.from_numpy(numpy_a)
torch_a
rnd = torch.rand(5, 3)# 0- 1 之间 均匀分布
one = torch.ones(2, 2)
zero=torch.zeros(2,2)
eye=torch.eye(2,2) #对角阵 10 01
max_value, max_idx = torch.max(x, dim=1) # 列 0 行 1
print(max_value, max_idx)
sum_x = torch.sum(x, dim=1)
print(sum_x)
cpu_a=torch.rand(4, 3)
cpu_a.type()
gpu_a=cpu_a.cuda()
gpu_a.type()
cpu_b=gpu_a.cpu()
cpu_b.type()
#使用torch.cuda.is_available()来确定是否有cuda设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(device)
#将tensor传送到设备
gpu_b=cpu_b.to(device)
gpu_b.type()
Kernel size 3 x 3 5 x 5
padding 1 x 1 2 x 2
stride 1 x 1 1 x 1
a=a.cpu().numpy()