Pytorch-handbook 基本知识-张量

1、Tensor(张量)

张量的英文是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()

2、Tensor基本数据类型

32位浮点型:torch.FloatTensor (默认)

64位整型:torch.LongTensor

32位整型:torch.IntTensor

16位整型:torch.ShortTensor

64位浮点型:torch.DoubleTensor

3、Numpy转换

使用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

4、初始化

rnd = torch.rand(5, 3)# 0- 1 之间 均匀分布

one = torch.ones(2, 2)


zero=torch.zeros(2,2)

eye=torch.eye(2,2) #对角阵 10 01 

5、常用方法

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)

6、设备转换


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()

7、Conv不变

Kernel size 3 x 3    5 x 5

padding 1 x 1         2 x 2

stride 1 x 1             1 x 1

8、从Cuda 转换为普通变量

a=a.cpu().numpy()

你可能感兴趣的:(Torch)