Pytorch中张量的基本使用

1、什么是张量

张量是一个多维的数据容器,可以包含标量、向量、矩阵以及更高维度的数据。在数学上,张量可以被视为一个有序的数组,每个元素都可以通过索引来访问。张量的维度(也称为阶或秩)定义了其形状,即每个维度的大小。

  • 0维张量:也称为标量(Scalar),是最基本的数据单元,没有维度,只有一个数值。
  • 1维张量:通常称为向量(Vector),可以看作是标量的有序列表,常用于表示数据点或特征。
  • 2维张量:称为矩阵(Matrix),在数学和物理学中广泛使用,用于表示线性变换、统计数据等。
  • 多维张量:当数据的维度超过两个时,我们称之为多维张量。它们可以表示复杂的数据结构,如图像、视频帧或高维数据集。
  • import torch
    # 0维张量:标量
    scalar = torch.tensor(7)
    print(scalar.ndim)  # 输出0
    # 1维张量:向量
    vector = torch.tensor([7, 7])
    print(vector.ndim)  # 输出1
    # 2维张量:矩阵
    matrix = torch.tensor([[7, 8], [9, 10]])
    print(matrix.ndim)  # 输出2
    # 多维张量
    tensor = torch.tensor([[[1, 2, 3], [3, 6, 9], [2, 4, 5]]])
    print(tensor.ndim)  # 输出3

 2、张量的创建
2.1 基本创建方式
(1). 根据已有数据创建张量
(2). 根据形状创建张量

import torch

# 从Python列表创建张量
tensor_from_list = torch.tensor([1, 2, 3, 4, 5])

import numpy as np

# 从NumPy数组创建张量
np_array = np.array([1, 2, 3, 4, 5])
tensor_from_numpy = torch.from_numpy(np_array)

# 创建一个形状为(3, 4)的未初始化张量
tensor_empty = torch.empty(3, 4)
# 创建一个形状为(3, 4)的全0张量
tensor_zeros = torch.zeros(3, 4)
# 创建一个形状为(3, 4)的全1张量
tensor_ones = torch.ones(3, 4)
# 创建一个形状为(3, 4)的全指定值张量,这里指定值为7
tensor_full = torch.full((3, 4), 7)
# 创建一个形状为(3, 4)的随机张量
tensor_rand = torch.rand(3, 4)

# 或者,创建一个与已有张量形状相同,元素值随机的张量
tensor_rand_like = torch.rand_like(tensor_zeros)
# 创建一个形状为(3, 4)的标准正态分布随机张量
tensor_randn = torch.randn(3, 4)

# 或者,创建一个与已有张量形状相同,元素值从标准正态分布随机的张量
tensor_randn_like = torch.randn_like(tensor_zeros)

 2.2 创建线性和随机张量
(1) 线性张量

创建线性张量: 线性张量通常指的是张量中的元素是按照某种线性规律排列的。在PyTorch中,可以使用torch.arangetorch.linspace来创建这样的张量。

使用torch.arange创建从起始值到结束值的线性序列张量:

import torch

# 假设我们想要从0开始到9结束,步长为1的线性张量
linear_tensor = torch.arange(10)  # 等同于 torch.arange(start=0, end=10, step=1)

使用torch.linspace创建在指定范围内均匀分布的线性张量:

# 从0到1创建10个均匀分布的线性张量
linear_tensor_even = torch.linspace(start=0, end=1, steps=10)

(2) 随机张量

随机张量是指张量中的元素是随机生成的。PyTorch提供了多种方法来创建随机张量。

使用torch.rand创建在[0, 1)区间内均匀分布的随机张量:

# 创建一个形状为(3, 4)的随机张量
random_tensor_uniform = torch.rand(3, 4)

使用torch.randn创建标准正态分布(均值为0,标准差为1)的随机张量&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值