当前位置: 首页 > news >正文

深度学习基础:Tensor(张量)的创建方法详解

请添加图片描述

文章目录

    • 一、什么是张量(Tensor)?
    • 二、张量的创建方法
      • 1️⃣ 直接创建张量(从列表或数据生成)
      • 2️⃣ 使用 `torch.zeros()`、`torch.ones()`、`torch.full()` 创建固定值张量
      • 3️⃣ 使用 `torch.arange()`、`torch.linspace()` 创建序列张量
      • 4️⃣ 使用 `torch.rand()`、`torch.randn()` 创建随机张量
      • 5️⃣ 使用 `torch.eye()` 创建单位矩阵
      • 6️⃣ 从 NumPy 数组创建张量
      • 7️⃣ 创建与现有张量形状相同的新张量
    • 三、张量创建总结表
    • 📚 参考资料


一、什么是张量(Tensor)?

简单来说,张量就是多维数组(multi-dimensional array)
在 PyTorch 中,torch.Tensor 是一个包含数值的多维容器,可以存放在 CPU 或 GPU 上。

具体内容请参考深度学习中的张量(Tensor)入门-CSDN博客

种类示例维度
标量(Scalar)torch.tensor(5)0D
向量(Vector)torch.tensor([1,2,3])1D
矩阵(Matrix)torch.tensor([[1,2],[3,4]])2D
三维及以上张量torch.randn(2,3,4)3D+

二、张量的创建方法

在 PyTorch 中,有多种方式可以创建张量。

下面按类型详细介绍。


1️⃣ 直接创建张量(从列表或数据生成)

  1. 最基础的方式是使用 torch.tensor() 直接从 Python 列表或嵌套列表创建。
import torch# 从列表创建张量
x = torch.tensor([1, 2, 3])
print(x)# 从嵌套列表创建二维张量
m = torch.tensor([[1, 2], [3, 4]])
print(m)

注意

  • 默认数据类型为 torch.float32torch.int64(取决于输入类型)。
  • 可以通过 dtype 参数指定类型:
  1. 也可以使用 torch.Tensor(size) 创建指定形状的张量
import torch# 创建指定形状的张量,默认类型为float32
tensor1 = torch.Tensor(3, 2, 4)
print(tensor1)
print(tensor1.dtype)# 也可以用来创建指定内容的张量
tensor2 = torch.Tensor([[1, 2, 3, 4], [5, 6, 7, 8]])
print(tensor2)
  1. 下边是以上两种方式创建指定类型的张量、

可通过torch.IntTensor()torch.FloatTensor()等创建。

或在torch.tensor()中通过dtype参数指定类型。

import torch# 创建int16类型的张量
tensor1 = torch.ShortTensor(2, 2)
tensor2 = torch.tensor([1, 2, 3], dtype=torch.int16)
print(tensor1, tensor1.dtype)
print(tensor2, tensor1.dtype)# 创建int32类型的张量
tensor1 = torch.IntTensor(2, 3)
tensor2 = torch.tensor([3, 4, 5], dtype=torch.int32)
print(tensor1)
print(tensor2)# 元素类型不匹配则会进行类型转换
tensor1 = torch.IntTensor([1.1, 2.2, 3.6])
tensor2 = torch.tensor([3.1, 2.2, 1.6], dtype=torch.int32)
print(tensor1)
print(tensor2)# 创建float32类型的张量
tensor1 = torch.FloatTensor([7, 8, 9])
tensor2 = torch.tensor([1, 2, 3], dtype=torch.float32)
print(tensor1, tensor1.dtype)
print(tensor2, tensor1.dtype)# 创建float64类型的张量
tensor1 = torch.DoubleTensor(2, 3, 1)
tensor2 = torch.tensor([1, 2, 3], dtype=torch.float64)
print(tensor1)
print(tensor2)

2️⃣ 使用 torch.zeros()torch.ones()torch.full() 创建固定值张量

这类函数非常常用,常用于初始化权重、偏置等。

# 全零张量
z = torch.zeros((2, 3))
print(z)# 全一张量
o = torch.ones((2, 3))
print(o)# 固定值张量
f = torch.full((2, 3), 7)
print(f)

3️⃣ 使用 torch.arange()torch.linspace() 创建序列张量

适合生成规律性的数值序列,是一种指定区间的张量创建。

# arange: 从 start 到 end(不含 end),步长 step
a = torch.arange(0, 10, 2)
print(a)  # [0, 2, 4, 6, 8]# linspace: 从 start 到 end,均匀生成 num 个数
b = torch.linspace(0, 1, steps=5)
print(b)  # [0., 0.25, 0.5, 0.75, 1.]

4️⃣ 使用 torch.rand()torch.randn() 创建随机张量

随机张量是深度学习中最常见的初始化方式。

# [0, 1) 均匀分布
u = torch.rand((2, 3))
print(u)# 标准正态分布(均值0,方差1),n即normal,代表正态分布
n = torch.randn((2, 3))
print(n)

如果需要指定分布参数,可以使用:

# 自定义均值和方差
normal = torch.normal(mean=0, std=1, size=(3, 3))

5️⃣ 使用 torch.eye() 创建单位矩阵

在矩阵计算(如线性代数)中非常常用。

I = torch.eye(3)
print(I)
# 输出:
# tensor([[1., 0., 0.],
#         [0., 1., 0.],
#         [0., 0., 1.]])

6️⃣ 从 NumPy 数组创建张量

PyTorch 与 NumPy 可以方便地相互转换。

import numpy as np# NumPy -> Tensor
np_arr = np.array([[1, 2], [3, 4]])
t = torch.from_numpy(np_arr)
print(t)# Tensor -> NumPy
back = t.numpy()
print(back)

这在数据预处理阶段尤其常见。


7️⃣ 创建与现有张量形状相同的新张量

可以使用以下方法快速创建“形状一致”的张量:

x = torch.tensor([[1, 2, 3], [4, 5, 6]])# 与 x 形状相同的全零张量
z = torch.zeros_like(x)# 与 x 形状相同的全一张量
o = torch.ones_like(x)# 与 x 形状相同的随机张量
r = torch.rand_like(x, dtype=torch.float)

三、张量创建总结表

方法功能示例
torch.tensor(data)从列表创建张量torch.tensor([[1,2],[3,4]])
torch.zeros(size)创建全零张量torch.zeros((3,3))
torch.ones(size)创建全一张量torch.ones((2,4))
torch.full(size, val)创建固定值张量torch.full((2,2), 9)
torch.arange(start, end, step)按步长创建序列torch.arange(0, 10, 2)
torch.linspace(start, end, steps)均匀取样序列torch.linspace(0, 1, 5)
torch.rand(size)均匀随机分布torch.rand((2,3))
torch.randn(size)标准正态分布torch.randn((2,3))
torch.eye(n)单位矩阵torch.eye(3)
torch.from_numpy(arr)从 NumPy 创建torch.from_numpy(np_arr)
torch.zeros_like(t)与张量形状相同torch.zeros_like(x)

📚 参考资料

  • PyTorch 官方文档:torch.Tensor
  • PyTorch 官方文档:torch.tensor
http://www.dtcms.com/a/521046.html

相关文章:

  • HTML5基础——18、CSS滤镜
  • 从零开始的C++学习生活 13:红黑树全面解析
  • RealVNC Viewer(Windows控制Mac)
  • mac下载wget
  • SQL进阶:深入解析SQL执行顺序
  • 专业网站建设的公司哪家好合肥计算机培训机构
  • C#实现摄像头视频录制与保存
  • 东莞网站建没可信网站是什么意思
  • led行业网站源码wordpress会员查看发布插件
  • 网站建设前期需要干嘛许昌网站建设哪家最好
  • 【Linux学习笔记】基于阻塞队列和环形队列的生产者消费者模型
  • GAN生成对抗网络学习-例子:生成逼真手写数字图
  • WPF MVVM下 ItemsControl条目命令绑定传参
  • 贵州网站制作公司电话wordpress有留言时邮件提醒
  • Python 脚本在工作日(周一到周五)的 8:00 到 19:00 之间持续运行,并在其他时间暂停(延时)
  • 婚庆网站大全深圳企业网站制作公司查询
  • 当城市有了“空间智能体”:一座长江首城的智慧蝶变
  • 机械类做的最好的网站网站开发代理江苏
  • 让别人做网站图片侵权网站简易后台
  • seo针对网站做策划大型网站开发合同
  • Macao资料生成程序,全新的UI 三端自适应PHP空间
  • 1Panel 安装与使用全指南:从部署到实战运维
  • Katalon Studio自愈测试功能
  • 非java、python、c/c++、perl、php、sql等的文章
  • 企业网站的建设与应用开题报告自己搭建app
  • 实验三:3-8线译码器设计
  • 深入浅出:马尔科夫链完全指南
  • 国外域名抢注网站seo顾问什么职位
  • 怎么做网站dns加速销售订单管理系统软件
  • DevOps工具链选型,Atlassian or TikLab哪一款更好用?