2022.9.18第二十三次周报

目录

前言

PyTorch的安装

PyTorch的历史

张量

怎样在PyTorch中创建张量?

直接从列表中创建一个张量

从NumPy数组中创建一个张量

从另一个张量中初始化一个新的张量

根据形状形成一个张量

张量的属性

张量的一系列操作

总结


前言

从本周开始,我们学习PyTorch相关知识,提高代码编写能力。这周我们先来学习什么是张量,并且是如何运用在实际操作中的。

PyTorch的安装

第一步,Anaconda创建python3.7的环境

第二步,在3.7的环境下安装PyTorch

PyTorch的历史

PyTorch是2017年1月FAIR(Facebook AI Research)发布的一款深度学习框架。从名称可以看出,PyTorch是由Py和Torch构成的。其中,Torch是纽约大学在2012年发布的一款机器学习框架,采用Lua语言为接口,但因Lua语言较为小众,导致Torch知名度不高。PyTorch是在Torch基础上用 python语言进行封装和重构打造而成的。

简单来说,最早的时候没有PyTorch,只有Torch。Torch的核心是C语言,PyTorch使用python包装了Torch。

张量

张量是个多维数组。(矩阵是二维数组)

在PyTorch中,我们使用张量对模型的输入和输出以及模型的参数进行编码。

张量和NumPy的多维数组非常相似,除此之外张量可以在GPU或其他硬件加速器上运行。

事实上,张量和NumPy数组通常可以共享相同的底层内存,从而无需复制数据。

import torch
import numpy as np

怎样在PyTorch中创建张量?

张量可以通过各种方式初始化。请看以下示例:

直接从列表中创建一个张量

data = [[1, 2],[3, 4]]
x_data = torch.tensor(data)

从NumPy数组中创建一个张量

np_array = np.array(data)
x_np = torch.from_numpy(np_array)

从另一个张量中初始化一个新的张量

x_ones = torch.ones_like(x_data) 
print(f"Ones Tensor: \n {x_ones} \n")

x_rand = torch.rand_like(x_data, dtype=torch.float) 
print(f"Random Tensor: \n {x_rand} \n")z

根据形状形成一个张量

shape = (2,3,)
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor = torch.zeros(shape)

print(f"Random Tensor: \n {rand_tensor} \n")
print(f"Ones Tensor: \n {ones_tensor} \n")
print(f"Zeros Tensor: \n {zeros_tensor}")

张量的属性

tensor = torch.rand(3,4)

数据类型

print(f"Shape of tensor: {tensor.shape}")

数据形状

print(f"Datatype of tensor: {tensor.dtype}")

张量是在哪个设备上创建的

print(f"Device tensor is stored on: {tensor.device}")

张量的一系列操作

张量运算,包括算术,线性代数,矩阵操作(转置,索引,切片),采样等。

这些操作中的每一个都可以在GPU上运行(通常比CPU上运行速度更快)。

默认情况下,张量是在 CPU 上创建的。我们需要使用方法将张量显式移动到GPU(在检查GPU可用性之后)。

# We move our tensor to the GPU if available
if torch.cuda.is_available():
    tensor = tensor.to("cuda")

总结

本周我们学习了张量的基本概念和基本操作,通过这些内容我们初步入手了PyTorch的使用。下次的学习中,我们将了解数据集和数据加载器的有关知识。

猜你喜欢

转载自blog.csdn.net/weixin_43971717/article/details/126917717