Pytorch学习记录-使用Pytorch进行深度学习,60分钟闪电战

使用Pytorch进行深度学习,60分钟闪电战
本次课程的目标:

  • 从更高水平理解Pytorch的Tensor(张量)和神经网络
  • 训练一个小的图像分类神经网络
    注意确定已经安装了torch和torchvision

什么是Pytorch

Pytorch是一个针对两类受众的科学计算包

  • Numpy替代,可以使用GPU
  • 深度学习研究平台,提供灵活性和速度

开始

Tensors(张量)

张量和Numpy的ndarrays类似,此外,张量还可以应用于GPU加速计算。以下是几个常用的方法
生成一个(5,3)的0张量和一个(5,3)的随机张量

from __future__ import print_function
import torch

x = torch.empty(5, 3)
print('x=',x)

y = torch.rand(5, 3)
print('y=',y)

x= tensor(1.00000e-43 *
       [[ 0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000],
        [ 0.0000,  7.3989,  0.0000],
        [ 0.0000,  0.0000,  0.0000]])
y= tensor([[ 0.9796,  0.0775,  0.3972],
        [ 0.5790,  0.8416,  0.7846],
        [ 0.8820,  0.8076,  0.9701],
        [ 0.6431,  0.1062,  0.0848],
        [ 0.0472,  0.7201,  0.4488]])

生成shape为(5,3),由0填充,类型为long的张量

a= torch.zeros(5,3,dtype=torch.long)
print('a=',a)

a= tensor([[ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0]])

直接从数据构建张量

# b=torch.tensor([5.6,3])
b=torch.tensor(5.6)
print('b=',b)

获取张量的大小,注意size()生成的是一个tuple类型数据,支持所有tuple操作。

size= x.size()
print(size)

张量的运算,可以直接相加,也可以使用torch.add()等方法。
需要resize和reshape张量的时候,可以使用torch.view()

c=torch.randn(4,4)
d=c.view(16)
e=c.view(-1,8)
print(c.size(),d.size(),e.size())

torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])

如果有一个元素张量,使用.item()可以将值作为Python数字

x=torch.randn(1)
print(x)
print(x.item())

tensor([-0.9725])
-0.9725168943405151
Numpy桥

将一个Torch的张量转为Numpy的array,同理也可以转回来。torch张量和Numpy的array共享同一个记忆地址,改变一个就会改变另一个。

h=torch.ones(5)
print(h)
i=h.numpy()
print(i)

tensor([ 1.,  1.,  1.,  1.,  1.])
[1. 1. 1. 1. 1.]
CUDA张量

张量可以移动到任何硬件,通过使用.to方法

if torch.cuda.is_available():
    device = torch.device("cuda")          # a CUDA device object
    y = torch.ones_like(x, device=device)  # directly create a tensor on GPU
    x = x.to(device)                       # or just use strings ``.to("cuda")``
    z = x + y
    print(z)
    print(z.to("cpu", torch.double))
    
x= tensor([[ 0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.1691,  0.0000]])
y= tensor([[ 0.5423,  0.4364,  0.6140],
        [ 0.9988,  0.3274,  0.4991],
        [ 0.1386,  0.8057,  0.3958],
        [ 0.4735,  0.1752,  0.5884],
        [ 0.8408,  0.0302,  0.3169]])
a= tensor([[ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0]])

你可能感兴趣的:(Pytorch学习记录-使用Pytorch进行深度学习,60分钟闪电战)