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

计算机视觉(CV)——pytorch张量基本使用

1. 张量的创建方式

import torch
# 1.通过列表创建张量
t = torch.tensor([1, 2])# 2.通过元组创建张量
torch.tensor((1, 2))# 3.通过array创建张量
import numpy as np
x = np.array((1, 2))
torch.tensor(x)

2. 张量的类型

t.dtype 
# 张量默认创建长整形int64
torch.tensor(np.array([1.1, 1.2])).dtype
# 输出为float64
torch.tensor([1.1, 1.2]).dtype
# 输出为float32
## 创建浮点型数组时,张量默认创建32位,而array默认为64位置

在这里插入图片描述

2.1 创建指定类型的张量
torch.tensor([1, 2], dtype=torch.int16)
2.2 创建复数
# 1是实部,2j是虚部
x = torch.tensor(1 + 2j)

3. 张量的维度及形变

3.1 查看张量维度
# 创建1维张量
t = torch.tensor([1, 2])# 查看张量维度
t.ndim
t.shape
t.size()
3.2 0维张量
# 虽然只包含一个元素,但又不是单独的一个数
# t1是一个0维张量,而t2是一个1维张量
t1 = torch.tensor(1)
t2 = torch.tensor([1])
3.3 张量的解读方法
import numpy as np
a1 = np.array([[1, 2, 2], [1, 3, 3]])
a2 = np.array([[1, 2, 3], [4, 5, 6]])# 创建一个高维数组
t3 = torch.tensor([a1, a2])
"""
tensor([[[1, 2, 2],[1, 3, 3]],[[1, 2, 3],[4, 5, 6]]])
"""# 输出其形状
t3.shape
"""torch.Size([2, 2, 3])
"""
# 第一个2可以理解为张量t3包含两个子元素,(2, 3)可以理解为这两个子元素是二维的,且形状为2x3
3.4 拉平张量
# 将多维的张量准换为1xn的张量
t4 = t3.flatten()
6. 使用reshape进行任意变化
使用reshape时,若调用为 t.reshape(x, y, z,...),则 t.shape 得到的值即为(x, y, z,...)

4. 张量的索引、切片

4.1 张量的符号索引
import torch
import numpy as np
# 1.一维张量索引,基本格式遵循[start : end : step]
t1 = torch.arange(1, 11)
# tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 这样获取的是一个0维张量,不是单独的数,要转换为数字需使用item()方法
t1[0]
# tensor(1)
t1[1: 8] #左闭右开
# tensor([2, 3, 4, 5, 6, 7, 8])
t1[1: : 2]
# tensor([2, 4, 6, 8, 10])
t1[: 8 : 2]
# tensor([1, 3, 5, 7])
4.2 张量的函数索引
# 使用index_select(),通过指定index来对张量进行索引
indices = torch.tensor([1, 2])
x = torch.index_select(t1, 0, indices)
# 第二个参数代表索引的维度,由于t1只有一个维度,故而取值为0,表示在第一个维度上进行索引

在这里插入图片描述

4.3 tensor.view()

此方法会返回一个类似视图的结果,该结果和原张量对象共享一块数据存储空间,并且通过.view()方法,还可以改变对象结构,生成一个不同结构,但共享一个存储空间的张量。当然,共享一个存储空间,也就代表二者是”浅拷贝”的关系,修改其中一个,另一个也会同步进行更改。
在这里插入图片描述

4.4 chunk分块

在这里插入图片描述
当原张量不能均分时,chunk不会报错,会返回其他均分结果

4.5 split拆分函数

在这里插入图片描述
split所得对象也是一个视图

5. 张量的合并操作

张量的合并操作与列表的追加元素类似,可以拼接、堆叠

5.1 拼接函数cat

1.1 先初始化3个张量
在这里插入图片描述
1.2 分别按照行列进行拼接
在这里插入图片描述
1.3 拼接维度不一致将会出错
在这里插入图片描述

5.2 堆叠函数stack

在这里插入图片描述

注:堆叠要求张量的形状完全一致,要求比cat更高

5. 张量广播

广播特性允许允许不同形状的张量之间进行计算。

  1. 相同形状的张量计算本质也用到了广播特性。
  2. 不同形状的张量计算。
  • 标量和任意形状的张量都可以运算。
  • 不同形状的张量。
    • 若二者在两个分量均不相同,但都有分量为1的情况,则可以广播;
    • 若二者在两个分量中仅有一个不同,且不同的分量中有一个为1,则可以广播。
http://www.lryc.cn/news/615929.html

相关文章:

  • imx6ull-驱动开发篇17——linux原子操作实验
  • docker等基础工具使用
  • 个人笔记Mybatis2
  • 第一章 概述
  • 快速了解DBSCAN算法
  • reinterpret_cast and static cast
  • Docker实战:为项目打造即开即用的宝塔LNMP环境
  • redis集群-docker环境
  • 【从源码角度深度理解 CPython 的垃圾回收机制】:第2课循环引用:标记清除-分代回收
  • 机器学习线性归回实战(单因子和多音字分别建立预测房价模型)
  • 一个基于 Next.js 和 Puppeteer 的 Markdown 转图片服务,支持 Docker 部署和 API 集成
  • Node.js面试题及详细答案120题(01-15) -- 基础概念篇
  • python | numpy小记(十):理解 NumPy 中的 `np.random.multinomial`(进阶)
  • Stlink识别不到-安装驱动
  • 医防融合中心-智慧化慢病全程管理医疗AI系统开发(下)
  • 整数规划-分支定界
  • Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
  • AI编程插件对比分析:CodeRider、GitHub Copilot及其他
  • 给AI装上“翻译聚光灯”:注意力机制的机器翻译革命
  • 【精彩回顾·成都】成都 User Group×柴火创客空间:开源硬件驱动 AI 与云的创新实践!
  • 打卡day34
  • openpnp - 顶部相机如果超过6.5米影响通讯质量,可以加USB3.0信号放大器延长线
  • Spark执行计划与UI分析
  • AutoCAD 2026 的主要功能
  • 变量详解:创建初始化与内存管理
  • lesson34:深入理解Python线程:从基础到实战优化
  • XGBoost算法在机器学习中的实现
  • Android Camera 打开和拍照APK源码
  • Android 开发问题:Invalid id; ID definitions must be of the form @+id/ name
  • Android 16 KB页面大小适配的权威技术方案总结