4-1 张量的结构操作

张量结构操作主要包括:张量创建,索引切片,维度变换,合并分割。

一、创建张量

张量创建的许多方法和numpy中创建array的方法很像。以下记录一些比较常用的操作:

(1)直接采用torch.tensor创建,指定数据类型为torch.float

image.png

(2)torch.arrage()函数

image.png

(3)torch.range()函数

image.png

(4)torch.linspace()

image.png

(5)torch.zeros()

image.png

(6)torch.ones() 和 torch.zeros_like()

image.png

(7)torch.fill_()

image.png

(8)正态随机分布

image.png

(8)特殊矩阵

image.png

二、索引切片

规则切片:

例如,采用均匀随机分布创建一个矩阵:
image.png
第0行:
image.png
倒数第一行:
image.png
第1行至第3行:
image.png
第1行至最后一行,第0列到最后一列每隔两列取一列:
image.png
可以使用索引和切片修改部分元素:
image.png
省略号可以表示多个冒号:
image.png

不规则切片:

以上切片方式相对规则,对于不规则的切片提取,可以使用torch.index_select, torch.take, torch.gather, torch.masked_select.
考虑班级成绩册的例子,有4个班级,每个班级5个学生,每个学生7门科目成绩。可以用一个4×5×7的张量来表示。
image.png
torch.floor()返回具有 input 元素下限的新张量,最大整数小于或等于每个元素。例如:
image.png

torch.index_select()

抽取每个班级第0个学生,第2个学生,第4个学生的全部成绩:
image.png
抽取每个班级第0个学生,第2个学生,第4个学生的第1门课程,第3门课程,第6门课程成绩
image.png

torch.take()

image.png

torch.masked_select()

image.png
以上这些方法仅能提取张量的部分元素值,但不能更改张量的部分元素值得到新的张量。
如果要通过修改张量的部分元素值得到新的张量,可以使用torch.where,torch.index_fill 和 torch.masked_fill

torch.where()

torch.where可以理解为if的张量版本
image.png

torch.index_fill()

image.png

torch.masked_fill()

image.png

三、维度变换

torch.view()

image.png

torch.reshape()

torch.reshape 可以改变张量的形状。
image.png
image.png
image.png

torch.squeeze()

如果张量在某个维度上只有一个元素,利用torch.squeeze可以消除这个维度。
image.png

torch.unsqueeze()

torch.unsqueeze的作用和torch.squeeze的作用相反。
image.png

torch.transpose()

torch.transpose可以交换张量的维度,torch.transpose常用于图片存储格式的变换上。
如果是二维的矩阵,通常会调用矩阵的转置方法 matrix.t(),等价于 torch.transpose(matrix,0,1)。
image.png

四、合并分割

可以用torch.cat方法和torch.stack方法将多个张量合并,可以用torch.split方法把一个张量分割成多个张量。
torch.cat和torch.stack有略微的区别,torch.cat是连接,不会增加维度,而torch.stack是堆叠,会增加维度。

torch.cat()

第0维:
image.png
第1维:
image.png

torch.stack()

第0维:
image.png
第1维:
image.png

torch.split()

torch.split是torch.cat的逆运算,可以指定分割份数平均分割,也可以通过指定每份的记录数量进行分割。
image.png

image.png
参考:https://github.com/lyhue1991/eat_pytorch_in_20_days

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/108933.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】进程的通信IPC

进程通信是指进程之间的信息交换。 低级通信方式:PV操作 高级通信方式:1.共享存储2.消息传递3.管道通信 共享存储 低级数据结构共享,高级存储区共享。 对共享空间进行读写操作时,需要用到互斥工具。 消息传递 利用发送消息和…

OpenCV 01(图像加载与显示)

一、机器视觉 现在说的机器视觉(Machine Vision)一般指计算机视觉(Computer Vision), 简单来说就是研究如何使机器看懂东西。就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传…

【LeetCode-中等题】904. 水果成篮

文章目录 题目方法一:滑动窗口方法二: 题目 题目的意思就是:找至多包含两种元素的最长子串,返回其长度 方法一:滑动窗口 class Solution { // 滑动窗口 找至多包含两种元素的最长子串,返回其长度public …

C++之编译时预定义宏flag(二百一十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

UE5 Foliage地形植被实例删不掉选不中问题

目前问题测试发生在5.2.1上 地形上先填充后刷的植被删不掉 首先这个就是bug,大概看到说是5.3上能解决了,对此我只能吐槽ue5上地形植被bug太多了 什么nanite还能产生bug,不过这次又不是,整个删掉instance可以删除所有植被&#…

Python学习笔记:导入txt、xlsx文件并做简单函数处理

1.txt文件 1.1路径 file_path "E:\Python Project\temp.txt" with open(file_path) as f:content1 f.read() 导入文件时,如果直接放文件绝对路径上去会报错,这是因为\P是转义字符 所以在绝对路径前面加r可以避免将引号内的内容识别成转义…

Can‘t load the model for ‘stabilityai/sd-vae-ft-mse‘

Can’t load the model for ‘stabilityai/sd-vae-ft-mse’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘stabilityai/sd-vae-ft-mse’ is the correct…

python,迪卡尔象限中画点

import numpy as np import matplotlib.pyplot as plt circleNum 30 # 同时圆刻度值 pointNum 20 # 点的数量 theta np.linspace(0.0, 2*np.pi, pointNum, endpointFalse) s circleNum * np.random.rand(pointNum) # plt.polar(theta, s, linestyleNone, marker*) # 无连接…

Python 学习之路 03 之循环

😀前言 欢迎来到 Python 循环和流程控制的基础教程!无论您是一名新手,还是希望复习 Python 编程的基本知识,这个教程都是一个非常好的资源。在这份教程中,我们将探索 Python 中的不同循环结构和流程控制机制&#xff0…

Zabbix监控平台部署流程

Zabbix WEB、Zabbix Server、Zabbix Database放在一台服务器;(192.168.10.12)Zabbix Agent部署在被监控服务器上 (192.168.10.11)Zabbix Porxy 单独部署在一台服务器上(被监控服务器少于500台可以不部署&am…

HDMI 直通 ILA 调试实验

FPGA教程学习 第十四章 HDMI 直通 ILA 调试实验 文章目录 FPGA教程学习前言实验原理程序设计实验过程实验尝试总结TODO 前言 HDMI 输入直通到 HDMI 输出的显示,完成一个简单的 HDMI 输入输出检测。 实验原理 开发板 HDMI 输出接口芯片使用 ADV7511,HD…

Bean拷贝组件(注解驱动)方案设计与落地

一、背景 数据流转在各层之间的过程,应当是改头换面的,字段属性数量,属性名称(一般不变,但也有重构时出现变化的情况),类型名称(普遍变化例如BO、VO、DTO)。对于转换的业…