【深度学习实验报告】实验 1:PyTorch 使用简介(1)

  • PyTorch 中的张量及其运算

  • PyTorch 中的自动微分运算

  • 用 PyTorch 实现线性回归

1.3 实验环境
  • Python3.9

  • PyTorch1.10.2

  • pycharm

二、有关张量(Tensor)运算的练习


2.1 使用Tensor

PyTorch 是一个开源的深度学习框架,由 Facebook 支持开发。它的前身为Torch,但因为 Torch 使用的编程语言是 Lua,在国内流行度很小。Facebook 为了迎合数量更多的 Python 用户的需求,推出了 PyTorch。PyTorch 完全开源意味着你可以轻易获取它的代码,并按照自己的需求对它进行修改。比如让 PyTorch 支持复数运算等等。PyTorch 还有另外一个非常出众的特点是,使用 PyT orch 框架编写出的神经网络模型的代码非常简洁。实现同样的功能,使用 PyTorch 框架编写的代码往往更清晰明了

img

1 阶的张量可以看做是一个向量,通过索引可以取到一个“值”。

2 阶张量可以看做为一个矩阵,通过索引可以取到一个个的向量。

3 阶张量有点抽象,不过我们可以从图中看出,3 阶张量其实就是在 2 阶张量的矩阵中增加了一个深度。也就是说在 3 阶张量中我们可以通过索引取到一个个的矩阵。我们不难想象,4 阶张量也就是在 3 阶张量上增加了另外一个轴……我们可以使用 **Tensor.size()**方法获得一个张量的“尺寸”。在这里注意“尺寸”和维度是两个概念。就比如对于上图中的 1 阶张量,它的维度为 1,尺寸为 8; 对于上图中的 2 阶张量,它的维度为 2,尺寸为(8,6)。

要使用 PyTorch,首先需要在 Python 中引入 PyTorch 的包

import torch

计算机视觉软件包

import torchvision

torch 版本

print(torch.version)

计算机视觉软件包版本

print(torchvision.version)

是否有GPU 及其版本

print(torch.cuda.is_available())

print(torch.version.cuda)

‘’'1.10.2

0.11.3

True

11.3’‘’

没有数据的创建选项:

print(torch.eye(2))

print(torch.zeros(2, 2))

print(torch.ones(2, 2))

print(torch.rand(2, 2))

‘’'tensor([[1., 0.],

[0., 1.]])

tensor([[0., 0.],

[0., 0.]])

tensor([[1., 1.],

[1., 1.]])

tensor([[0.3657, 0.9712],

[0.9962, 0.9617]])‘’’

2.2 基本 Tensor 运算

创建一个5*3的全1矩阵

y = torch.ones(5, 3)

print(y)

计算两个矩阵相加

z = x + y

print(z)

矩阵转置

print(y.t())

矩阵相乘

print(x.mm(y.t()))

点乘

print(x*y)

转置操作可以用.t()来完成,也可以用 transpose(0,1)来完成。

2.2 Tensor 与 numpy.ndarray 之间的转换

PyTorch 的Tensor 可以与Python 的常用数据处理包Numpy 中的多维数组进行转换。

import torch

import numpy as np

为深度学习创建PyTorch张量-最佳选择

Tensor与tensor区别: 区别是:默认数据类型与指定的数据类型。

data = np.array([1, 2, 3])

另外一种转换 Tensor 的方法,为 torch.FloatTensor(data)

t1 = torch.Tensor(data)

t2 = torch.tensor(data)

t3 = torch.as_tensor(data)

t4 = torch.from_numpy(data)

print(t1)

print(t2)

print(t3)

print(t4)

print(t1.dtype)

print(t2.dtype)

print(t3.dtype)

print(t4.dtype)

‘’'tensor([1., 2., 3.])

tensor([1, 2, 3], dtype=torch.int32)

tensor([1, 2, 3], dtype=torch.int32)

tensor([1, 2, 3], dtype=torch.int32)

torch.float32

torch.int32

torch.int32

torch.int32’‘’

tensor 转化为 numpy 的多维数组

print(t1.numpy())

‘’‘[1. 2. 3.]’‘’

Tensor 和 Numpy 的最大区别在于 Tensor 可以在 GPU 上进行运算。

默认情况下,Tensor 是在 CPU 上进行运算的,如果我们需要一个 Tensor

在 GPU 上的实例,需要运行这个 **Tensor 的.cuda()**方法。

在下面的代码中,首先判断在本机上是否有 GPU 环境可用(有 NVIDIA 的GPU,并安装了驱动)。如果有 GPU 环境可用,那么再去获得张量 x,y 的 GPU 实例。注意在最后打印 x 和 y 这两个 GPU 张量的和的时候,我们调用了.cpu() 方法,意思是将 GPU 张量转化为 CPU 张量,否则系统会报错。

import torch

x = torch.rand(5, 3)

y = torch.ones(5, 3)

if torch.cuda.is_available():

x = x.cuda()

y = y.cuda()

z = x+y

print(z)

print(z.cpu())

‘’'tensor([[1.4453, 1.6272, 1.3072],

[1.9444, 1.2703, 1.8512],

[1.8694, 1.1878, 1.8789],

[1.5737, 1.8825, 1.4636],

[1.8158, 1.9969, 1.8819]], device=‘cuda:0’)

tensor([[1.4453, 1.6272, 1.3072],

[1.9444, 1.2703, 1.8512],

[1.8694, 1.1878, 1.8789],

[1.5737, 1.8825, 1.4636],

[1.8158, 1.9969, 1.8819]])‘’’

三、有关自动微分(Autograd)变量的练习


动态运算图(DynamicComputationGraph)是 PyTorch 的最主要特性,它可以让我们的计算模型更灵活、复杂,并可以让反向传播算法随时进行。而反向传播算法就是深度神经网络的核心

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
片转存中…(img-a2KgFr59-1715794109189)]

[外链图片转存中…(img-jJKrLyUi-1715794109189)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值