首页 > 其他分享 >pytorch的expand函数

pytorch的expand函数

时间:2024-07-15 09:31:08浏览次数:6  
标签:tensor torch 扩展 张量 pytorch 维度 expand 函数

PyTorch 中的 expand 函数用于扩展张量的形状,使其在某些维度上“看起来”像被复制了多次,但实际上它不会复制数据,从而节省内存和计算资源。扩展后的张量共享原始张量的内存空间,因此原始张量和扩展后的张量是同一个数据的视图。

以下是 torch.expand 函数的一些基本用法:

1. 扩展一维张量: 将一维张量扩展到更高维度,例如,将一维张量扩展为二维张量的第一维度。

import torch

x = torch.tensor([1, 2, 3])
y = x.expand(2, -1)  # 扩展为 2x3 的矩阵
print(y)
# 输出:
# tensor([[1, 2, 3],
#         [1, 2, 3]])

 -1 表示该维度的大小与原始张量相同。

 

2. 使用 -1 自动扩展: 使用 -1 可以自动扩展张量到与输入张量相同的大小。

x = torch.tensor([1, 2, 3])
y = x.expand(-1, 2)  # 扩展为 3x2 的矩阵
print(y)
# 输出:
# tensor([[1, 1],
#         [2, 2],
#         [3, 3]])

 

3. 扩展多维张量: 扩展多维张量时,可以指定多个维度进行扩展。

x = torch.tensor([[1, 2], [3, 4]])
y = x.expand(2, -1, -1)  # 扩展为 2x2x2 的张量
print(y)
# 输出:
# tensor([[[1, 2],
#          [1, 2]],
#         [[3, 4],
#          [3, 4]]])

 

4. 扩展与广播的区别: expandbroadcast 相似,但 broadcast 在进行操作时会复制数据,而 expand 不会。expand 更适用于减少内存使用。

5. 扩展与复制: 如果你需要一个实际复制了数据的新张量,可以使用 expand 后跟 clone

x = torch.tensor([1, 2, 3])
y = x.expand(2, -1).clone()  # 扩展后复制数据
print(y)
# 输出:
# tensor([[1, 2, 3],
#         [1, 2, 3]])

 

使用 expand 时,扩展的维度大小可以是具体的数值,也可以是 -1,表示该维度的大小与原始张量相同。如果扩展的维度大小大于原始张量,PyTorch 会抛出错误。

(摘自kimi)

 

标签:tensor,torch,扩展,张量,pytorch,维度,expand,函数
From: https://www.cnblogs.com/picassooo/p/18302453

相关文章

  • 函数的微分(彻底理清)
    问题引入计算一个边长为xxx的正方体的面积,函数为y=f(x)=x2y=f(x)=x^2y=f(x)=x2。当自变量xxx取得增量Δx\DeltaxΔx时,函数值取得的增量为Δy=f(x0+Δx)−f(x0)\Deltay=f(x_0+\Deltax)-f(x_0)Δy=f(x0​+Δx)−f(x0​)......
  • Python函数进阶
    1.多返回值返回值为return返回给上级函数的值,需要注意的是,与C和C++不同,Python中可以有多返回值。多返回值deftest_return():return1,2x,y=test_return()print(x)print(y)特点:按照返回值的顺序,写对应顺序的多个变量接收即可变量之间用逗号隔开支持不同......
  • Kotlin标准函数(语法糖)let with run also apply快速讲解
    目录1、知识储备——扩展函数原理定义扩展函数调用扩展函数2、返回值为上下文对象的标准函数applyalso3、返回值为Lambda表达式结果letrunwith4、一表总结1、知识储备——扩展函数原理Kotlin在不继承父类或实现接口下,也能扩展一个类的新功能定义扩展函数f......
  • 教你创建Python函数信手拈来哦(递归函数)
    Python中函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段函数能提高应用的模块性,和代码的重复利用率Python提供了许多内建函数,比如print()、type()、类型转换函数等等用户也可以自己创建函数,这被叫做用户自定义函数一、定义函数1.创建函数函数使用def关键......
  • 13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓
    13-matlabm_map地学绘图工具基础函数-介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar0.引言1.关于m_colmap2.关于m_contfbar3.结语0.引言  本篇介绍下m_map中用于创建和管理颜色映射函数(m_colmap)和为轮廓图绘制颜色条的函......
  • CDF累积分布函数和PPF百分点位分布函数
    目录cdf累积分布函数(CDF)ppf百分位点函数(PPF)区别与联系示例关系和区别cdf累积分布函数(CDF)定义:累积分布函数F(x......
  • Nuxt.js 错误侦探:useError 组合函数
    title:Nuxt.js错误侦探:useError组合函数date:2024/7/14updated:2024/7/14author:cmdragonexcerpt:摘要:文章介绍Nuxt.js中的useError组合函数,用于统一处理客户端和服务器端的错误,提供statusCode、statusMessage和message属性,示例展示了如何在组件中使用它来捕获和显......
  • Python函数(1)--自定义函数与作用域
    函数的定义Python中的函数是一段组织好的、可重复使用的、用来实现单一或相关联功能的代码块。函数能提高应用的模块性,和代码的重复可用性。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被称为用户自定义函数。自定义函数假设,我们现在求一......
  • js 一个函数有几种类型的属性
    在JavaScript中,函数对象可以拥有多种类型的属性。主要可以分为以下几类:实例属性(Instanceproperties):这些属性是在通过函数构造函数创建实例时绑定到实例上的属性。原型属性(Prototypeproperties):这些属性是绑定到函数对象的原型上的属性。实例可以通过原型链访问这些......
  • es5 js函数有哪几种继承方式
    在ES5(ECMAScript5)中,JavaScript函数有几种继承方式,主要是通过原型链实现的。以下是常见的几种继承方式:原型链继承(PrototypeInheritance):原理:通过将子类的原型对象设置为父类的实例来实现继承。特点:可以继承父类的实例方法和属性,但无法实现多继承。示例:functionParent(na......