PyTorch 中的 Tensor:属性、数据生成和基本操作

简介: PyTorch 中的 Tensor:属性、数据生成和基本操作

PyTorch 中的 Tensor:属性、数据生成和基本操作


简介:

PyTorch 是一个强大的深度学习框架,它提供了丰富的张量操作,是构建神经网络模型的核心组件之一。本文将会详细讲解 PyTorch 中的 Tensor 属性、数据生成方法以及常用的基本操作运算,帮助读者更好地理解和使用 PyTorch。


Tensor 的属性


在 PyTorch 中,Tensor 是一个类似于 NumPy 数组的多维数组,但它还具有其他属性和方法。Tensor 的一些重要属性包括:


  • 多维数组: Tensor 可以是多维数组,可以是标量(0 维)、向量(1 维)、矩阵(2 维)或高维数组。
  • 可在 CPU 或 GPU 上运算: Tensor 可以存储在 CPU 或 GPU 上,并且可以利用 GPU 进行并行计算,加快运算速度。
  • 自动求导: Tensor 支持自动求导功能,即计算梯度。通过设置 requires_grad=True,PyTorch 将跟踪对 Tensor 的所有操作,并在需要时计算梯度。
  • 丰富的操作: PyTorch 提供了丰富的操作函数,用于创建、操作和计算 Tensor,如数学运算、线性代数运算、形状操作、索引与切片等。
  • 灵活性: Tensor 可以存储不同类型的数据,如整数、浮点数、布尔值等,并且可以灵活地转换数据类型。
  • 与 NumPy 兼容: PyTorch 的 Tensor 类型与 NumPy 的 ndarray 类型之间可以进行相互转换,方便用户在两者之间进行无缝切换。


  • shape:Tensor 的形状,即每个维度的大小。
  • dtype:Tensor 的数据类型,如 float32、int64 等。
  • device:Tensor 存储的设备,如 CPU 或 GPU。


  • 演示代码
import torch

# 创建一个 Tensor
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 获取 Tensor 的形状(shape)
print("Tensor shape:", tensor.shape)

# 获取 Tensor 的数据类型(dtype)
print("Tensor data type:", tensor.dtype)

# 获取 Tensor 存储的设备(device)
print("Tensor device:", tensor.device)

  • 运行结果


这就是 PyTorch 中 Tensor 的一些重要属性。shape 表示 Tensor 的维度大小,dtype 表示 Tensor 的数据类型,device 表示 Tensor 存储的设备。这些属性在处理和操作 Tensor 时非常有用。


Tensor 的数据生成


PyTorch 提供了多种方法来创建 Tensor,常用的几种方法包括:

  • 通过 Python 列表或 NumPy 数组直接创建:
import torch

data_list = [[1, 2, 3], [4, 5, 6]]
tensor_from_list = torch.tensor(data_list)

data_array = np.array([[1, 2], [3, 4]])
tensor_from_array = torch.tensor(data_array)
  • 使用随机数生成 Tensor:
# 生成均匀分布的随机数
uniform_tensor = torch.rand(3, 3)

# 生成标准正态分布的随机数
normal_tensor = torch.randn(3, 3)
  • 创建全零或全一的 Tensor:
zeros_tensor = torch.zeros(2, 2)
ones_tensor = torch.ones(2, 2)
  • 运行结果


Tensor 的基本操作运算


Tensor 支持多种基本操作运算,包括数学运算、索引与切片、形状操作等。

  • 数学运算:
# 加法
result = tensor1 + tensor2

# 减法
result = tensor1 - tensor2

# 乘法
result = torch.matmul(tensor1, tensor2)

# 除法
result = torch.div(tensor1, tensor2)
  • 索引与切片:
# 索引
element = tensor[0, 0]

# 切片
subset = tensor[1:3, :]
  • 形状操作:
# 改变形状
reshaped_tensor = tensor.view(1, -1)

# 转置
transposed_tensor = tensor.t()

# 求和
sum_tensor = tensor.sum()

# 广播操作
broadcasted_tensor = tensor + scalar
  • 整合代码
import torch

# 创建两个 Tensor
tensor1 = torch.tensor([[1, 2], [3, 4]])
tensor2 = torch.tensor([[5, 6], [7, 8]])

# 加法操作:元素相加
result_add = tensor1 + tensor2

# 减法操作:元素相减
result_sub = tensor1 - tensor2

# 乘法操作:矩阵乘法
result_mul = torch.matmul(tensor1, tensor2)

# 除法操作:逐元素相除
result_div = torch.div(tensor1, tensor2)

# 索引操作:获取指定位置的元素
element = tensor1[0, 0]

# 切片操作:获取指定范围的子集
subset = tensor1[1:3, :]

# 改变形状操作:改变 Tensor 的形状
reshaped_tensor = tensor1.view(1, -1)

# 转置操作:矩阵转置
transposed_tensor = tensor1.t()

# 求和操作:对 Tensor 中的所有元素求和
sum_tensor = tensor1.sum()

# 广播操作:将标量与 Tensor 的每个元素相加
scalar = torch.tensor(2)  # 定义一个标量
broadcasted_tensor = tensor1 + scalar

# 打印结果
print("Tensor1:\n", tensor1)
print("Tensor2:\n", tensor2)
print("Tensor1 + Tensor2 (加法):\n", result_add)
print("Tensor1 - Tensor2 (减法):\n", result_sub)
print("Tensor1 * Tensor2 (乘法):\n", result_mul)
print("Tensor1 / Tensor2 (除法):\n", result_div)
print("Tensor1中(0, 0)位置的元素:", element)
print("Tensor1的切片:\n", subset)
print("改变形状后的Tensor1:\n", reshaped_tensor)
print("Tensor1的转置:\n", transposed_tensor)
print("Tensor1的总和:", sum_tensor)
print("Tensor1 + 标量 (广播):\n", broadcasted_tensor)
  • 运行结果

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
6月前
|
机器学习/深度学习 存储 PyTorch
PyTorch基本数据类型tensor
PyTorch基本数据类型tensor
76 2
|
2月前
|
数据挖掘 PyTorch TensorFlow
|
2月前
|
机器学习/深度学习 数据挖掘 TensorFlow
从数据小白到AI专家:Python数据分析与TensorFlow/PyTorch深度学习的蜕变之路
【9月更文挑战第10天】从数据新手成长为AI专家,需先掌握Python基础语法,并学会使用NumPy和Pandas进行数据分析。接着,通过Matplotlib和Seaborn实现数据可视化,最后利用TensorFlow或PyTorch探索深度学习。这一过程涉及从数据清洗、可视化到构建神经网络的多个步骤,每一步都需不断实践与学习。借助Python的强大功能及各类库的支持,你能逐步解锁数据的深层价值。
65 0
|
6月前
|
机器学习/深度学习 数据采集 PyTorch
pytorch中的数据索引
pytorch中的数据索引
54 0
|
4月前
|
数据挖掘 PyTorch TensorFlow
Python数据分析新纪元:TensorFlow与PyTorch双剑合璧,深度挖掘数据价值
【7月更文挑战第30天】随着大数据时代的发展,数据分析变得至关重要,深度学习作为其前沿技术,正推动数据分析进入新阶段。本文介绍如何结合使用TensorFlow和PyTorch两大深度学习框架,最大化数据价值。
102 8
|
3月前
|
PyTorch 算法框架/工具
【Pytorch】解决Fan in and fan out can not be computed for tensor with fewer than 2 dimensions
本文提供了两种解决PyTorch中由于torchtext版本问题导致的“Fan in and fan out can not be computed for tensor with fewer than 2 dimensions”错误的方法。
84 2
|
4月前
|
机器学习/深度学习 数据挖掘 TensorFlow
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】-了解张量(Tensor)
【PyTorch】-了解张量(Tensor)
|
6月前
|
机器学习/深度学习 存储 PyTorch
PyTorch深度学习基础:张量(Tensor)详解
【4月更文挑战第17天】本文详细介绍了PyTorch中的张量,它是构建和操作深度学习数据的核心。张量是多维数组,用于存储和变换数据。PyTorch支持CPU和GPU张量,后者能加速大规模数据处理。创建张量可通过`torch.zeros()`、`torch.rand()`或直接从Python列表转换。张量操作包括数学运算、切片和拼接。在深度学习中,张量用于神经网络模型的构建和训练。理解张量对于掌握PyTorch至关重要。