张量维度改变总结

news/2024/12/2 21:01:19/

文章目录

  • 一、view() 或 reshape()
  • 二、unsqueeze()
  • 三、squeeze()
  • 四、transpose()
  • 五、torch.expand_dims


一、view() 或 reshape()

  view() 或 reshape(): 这两个函数可以用于改变张量的形状,但保持元素总数不变。它们可以接受一个新的形状作为参数,并返回一个新的张量。例如:

import torchx = torch.randn(2, 3, 4)  # 创建一个形状为 [2, 3, 4] 的张量x_viewed = x.view(2, 12)  # 改变形状为 [2, 12]
x_reshaped = x.reshape(6, 4)  # 改变形状为 [6, 4]

二、unsqueeze()

  unsqueeze(): 这个函数可以在指定位置插入一个新的维度。它接受一个整数作为参数,表示要插入的位置。例如:

import torchx = torch.randn(3, 4)  # 创建一个形状为 [3, 4] 的张量x.unsqueeze(0)  # 在第 0 个位置插入一个新的维度,形状变为 [1, 3, 4]
x.unsqueeze(1)  # 在第 1 个位置插入一个新的维度,形状变为 [3, 1, 4]
import torchx = torch.randn(2, 3)  # 创建一个形状为 [2, 3] 的张量x_unsqueezed = torch.unsqueeze(x, dim=0)  # 在第 0 个位置插入一个新的维度,形状变为 [1, 2, 3]

三、squeeze()

  squeeze(): 这个函数可以删除维度为 1 的维度。它会返回一个新的张量,其中已删除了所有维度为 1 的维度。例如:

import torchx = torch.randn(1, 3, 1, 4)  # 创建一个形状为 [1, 3, 1, 4] 的张量x.squeeze()  # 删除所有维度为 1 的维度,形状变为 [3, 4]

四、transpose()

  transpose(): 这个函数可以交换张量的维度顺序。它接受两个整数作为参数,表示要交换的维度的位置。例如:

import torchx = torch.randn(2, 3)  # 创建一个形状为 [2, 3] 的张量x.transpose(0, 1)  # 交换维度 0 和维度 1 的位置,形状变为 [3, 2]

五、torch.expand_dims

  torch.expand_dims(input, dim): 这个函数接受一个张量 input 和一个整数 dim,表示要在 dim 位置插入一个新的维度。它会返回一个新的张量,其中插入了一个维度。例如:

import torchx = torch.randn(2, 3)  # 创建一个形状为 [2, 3] 的张量x_expanded = torch.expand_dims(x, dim=1)  # 在第 1 个位置插入一个新的维度,形状变为 [2, 1, 3]

http://www.ppmy.cn/news/1381016.html

相关文章

手机备忘录可以设置密码吗 能锁屏加密的备忘录

在繁忙的生活中,手机备忘录成了我随身携带的“小秘书”。那些关于工作的灵感、生活的琐事,甚至深藏心底的小秘密,都被我一一记录在里面。然而,每次当手机离开我的视线,或者需要借给他人使用时,我总会心生担…

vue的导入

import { onMounted, onUpdated, onUnmounted } from ‘vue’; 单一导出(不使用 {}):通常用于导入vue组件 当一个模块只导出一个内容时,可以直接导入,无需使用 {}。多个导出(使用 {})&#xff…

【Linux】动态库与静态库的打包使用

💻文章目录 📄前言🌺静态库概念静态库使用原理 🌻动态库概念使用方法原理 📓总结 📄前言 想必各位喜欢打电脑游戏,总是能游戏文件夹看到一种熟悉的文件后缀名——.lib的存在吧,你是…

.NET应用UI框架DevExpress XAF v23.2新版亮点 - 支持.NET 8

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 在DevEx…

极简云商业版 开源源码

简化版的云商业源码已经以开源形式发布了,现在可以解绑卡密和查询卡密。总体而言,这个版本已经相当完善了。在对接示例网盘中有一个用户注册的例子,需要配置一个邮箱。您可以在网页上启用QQ邮箱的标准版SMTP,并生成一个授权码。 …

C++ std::list的merge()使用与分析

看到《C标准库第2版》对list::merge()的相关介绍,令我有点迷糊,特意敲代码验了一下不同情况的调用结果。 《C标准库第2版》对list::merge()的相关介绍 list::merge()定义 merge()的作用就是将两个list合并在一起,函数有2个版本:…

JMeter使用记录

文章目录 概述从0创建一个测试场景线程组配置元件CSV Data Set ConfigHTTP信息头管理器HTTP Cookie管理器HTTP请求默认值 逻辑控制器简单控制器IF控制器循环控制器while控制器 取样器HTTP取样 前置/后置处理器BeanShell处理器JSR223处理器 监听器查看结果树聚合报告汇总报告 概…

C# 异步调用aysnc await

一、基本概念 在C#中,async和await关键字用于异步编程。异步编程允许程序在执行I/O密集型操作时不会被阻塞,从而提高程序的性能和响应性。 async关键字用于定义异步方法,表明该方法可能包含await表达式,并且可以在其执行期间异步…