实验 1:PyTorch 使用简介
一、实验介绍
1.1 实验内容
Pytorch 是由Facebook 支持的一套深度学习开源框架,相比较 Tensorflow, 它更加容易快速上手,所以一经推出就广受欢迎。本课程是采用 Pytorch 开源框架进行案例讲解的深度学习课程。Tensor(张量)是 PyTorch 的基础数据结构, 自动微分运算是深度学习的核心。在本实验中我们将学习 PyTorch 中 Tensor 的用法,以及简单的自动微分变量原理,最后,我们还会使用 PyTorch 构建一个简单的线性回归网络。
1.2 实验知识点
-
PyTorch 简介
-
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 框架编写的代码往往更清晰明了
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,