【Pytorch 基础教程2】10分钟掌握Tensor基础 VSCode +Pytorch配置

Pytorch 基础教程 02

Tensor

PyTorch 作为Numpy的代替品,可以使用GPU的强大计算能力

提供最大的灵活性和告诉的深度学习研究平台

这里补充上实验环境调试:第一次使用VS Code可以参考:PyTorch(超详细)部署与激活 举起Python火炬,点亮智慧人生【Windows版】

另外这里可能会遇到一些环境问题:

为了解决这里先点击VS Code右下角环境,在弹出菜单中选择Pytorch环境

开始安装torch library

SUCCESS !!

开始coding

Tensor是 PyTorch 中的核心数据抽象。此交互式笔记本深入介绍了 torch.Tensor 类。

首先,让我们导入 PyTorch 模块。我们还将添加 Python 的数学模块来简化一些示例。

2.1 创建Tensor

创建张量的最简单方法是使用 torch.empty() 调用:

python 复制代码
x = torch.empty(3, 4)
print(type(x))
print(x)

结果:

让我们拆分刚刚所做的事情:

  • 我们使用 torch 模块附带的众多工厂方法之一创建了一个张量。
  • 张量本身是二维的,这个例子有 3 行和 4 列。
  • 返回对象的类型是 torch.Tensor ,它是 torch.FloatTensor 的别名;默认的情况下,PyTorch 张量由 32 位浮点数填充。 (下面详细介绍数据类型。)
  • 打印张量时,您可能会看到一些看起来随机的值。 torch.empty() 调用为张量分配内存,但不使用任何值对其进行初始化 - 因此您看到的是分配时内存中的内容。

关于张量及其维数和术语的简要说明:

  • 有时你会看到称为vector的一维tensor。
  • 同样,二维tensor通常称为矩阵。
  • 任何超过二维的东西通常都被称为tensor。
    通常,你需要使用某个值来初始化张量。常见情况是全零、全一或随机值, torch 模块为所有这些提供工厂方法:
python 复制代码
zeros = torch.zeros(2, 3)
print(zeros)

ones = torch.ones(2, 3)
print(ones)

torch.manual_seed(1000)
random = torch.rand(2, 3)
print(random)

2.2 随机Tensors 和 seeding

说到随机张量,您是否注意到紧随其前面的 torch.manual_seed() 调用?使用随机值初始化张量(例如模型的学习权重)很常见,但有时(尤其是在研究环境中)你需要确保结果的可重复性。手动设置随机数生成器的种子是实现此目的的方法。让我们更仔细地看看:

python 复制代码
torch.manual_seed(1000)
random1 = torch.rand(2, 3)
print(random1)

random2 = torch.rand(2, 3)
print(random2)

torch.manual_seed(1000)
random3 = torch.rand(2, 3)
print(random3)

random4 = torch.rand(2, 3)
print(random4)

你应该在上面看到的是 random1 和 random3 具有相同的值, random2 和 random4 也是如此。手动设置 RNG 的种子会重置它,因此在大多数设置中,取决于随机数的相同计算应该提供相同的结果。

2.3 Tensor Shapes

通常,当你对两个或多个张量执行操作时,它们需要具有相同的形状 - 即具有相同的维度数以及每个维度中相同的单元数。为此,我们有 torch.*_like() 方法:

python 复制代码
x = torch.empty(2, 2, 3)
print(x.shape)
print(x)

empty_like_x = torch.empty_like(x)
print(empty_like_x.shape)
print(empty_like_x)

zeros_like_x = torch.zeros_like(x)
print(zeros_like_x.shape)
print(zeros_like_x)

ones_like_x = torch.ones_like(x)
print(ones_like_x.shape)
print(ones_like_x)

rand_like_x = torch.rand_like(x)
print(rand_like_x.shape)
print(rand_like_x)

上面代码单元中的第一个新内容是在张量上使用 .shape 属性。此属性包含张量每个维度的范围的列表 - 在我们的示例中, x 是形状为 2 x 2 x 3 的三维张量。

下面,我们调用 .empty_like() 、 .zeros_like() 、 .ones_like() 和 .rand_like() 方法。使用 .shape 属性,我们可以验证这些方法中的每一个都返回具有相同维度和范围的张量。

创建将覆盖的张量的最后一种方法是直接从 PyTorch 集合指定其数据:

2.4 Tensor Data Types

有几种方法可以设置张量的数据类型:

python 复制代码
a = torch.ones((2, 3), dtype=torch.int16)
print(a)

b = torch.rand((2, 3), dtype=torch.float64) * 20.
print(b)

c = b.to(torch.int32)
print(c)

设置张量基础数据类型的最简单方法是在创建时使用可选参数。在上面单元格的第一行中,我们为张量 a 设置 dtype=torch.int16 。当我们打印 a 时,我们可以看到它充满了 1 而不是 1. Python 的细节提示是这是一个整数类型而不是浮点数。

关于打印 a 需要注意的另一件事是,不像我们将 dtype 保留为默认值(32 位浮点)不同,打印张量还指定其 dtype.

我们可能还发现,我们从将张量的形状指定为一系列整数参数,到将这些参数分组到一个元组中。这并不是绝对必要的 - PyTorch 会将一系列初始的、未标记的整数参数作为张量形状 - 但在添加可选参数时,它可以使您的意图更具可读性。

设置数据类型的另一种方法是使用 .to() 方法。在上面的单元格中,我们以通常的方式创建一个随机浮点张量 b 。接下来,我们通过使用 .to() 方法将 b 转换为 32 位整数来创建 c 。请注意, c 包含与 b 相同的所有值,但被截断为整数。

可用的数据类型包括:

torch.bool

torch.int8

torch.uint8

torch.int16

torch.int32

torch.int64

torch.half

torch.float

torch.double

torch.bfloat

相关推荐
zy_destiny6 分钟前
【YOLOv12改进trick】三重注意力TripletAttention引入YOLOv12中,实现遮挡目标检测涨点,含创新点Python代码,方便发论文
网络·人工智能·python·深度学习·yolo·计算机视觉·三重注意力
自由的晚风8 分钟前
深度学习在SSVEP信号分类中的应用分析
人工智能·深度学习·分类
大数据追光猿8 分钟前
【大模型技术】LlamaFactory 的原理解析与应用
人工智能·python·机器学习·docker·语言模型·github·transformer
Start_Present20 分钟前
Pytorch 第七回:卷积神经网络——VGG模型
pytorch·python·神经网络·cnn·分类算法
玩电脑的辣条哥23 分钟前
大模型LoRA微调训练原理是什么?
人工智能·lora·微调
极客BIM工作室30 分钟前
DeepSeek V3 源码:从入门到放弃!
人工智能
神秘的土鸡1 小时前
如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)
人工智能·机器学习·自然语言处理·数据分析·llama·wps
fydw_7151 小时前
PreTrainedModel 类代码分析:_load_pretrained_model
人工智能·pytorch
Panesle1 小时前
bert模型笔记
人工智能·笔记·bert
胡耀超1 小时前
5.训练策略:优化深度学习训练过程的实践指南——大模型开发深度学习理论基础
人工智能·python·深度学习·大模型