千家信息网

Pytorch中的5个非常有用的张量操作分别是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Pytorch中的5个非常有用的张量操作分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。导读虽然也有其他方式可以实现相同的效
千家信息网最后更新 2026年11月01日Pytorch中的5个非常有用的张量操作分别是什么

Pytorch中的5个非常有用的张量操作分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

导读

虽然也有其他方式可以实现相同的效果,但是这几个操作可以让使用更加方便。

PyTorch是一个基于Python的科学包,用于使用一种称为张量的特殊数据类型执行高级操作。张量是具有规则形状和相同数据类型的数字、向量、矩阵或多维数组。PyTorch是NumPy包的另一种选择,它可以在GPU下使用。它也被用作进行深度学习研究的框架。

这5个操作是:

  • expand()
  • permute()
  • tolist()
  • narrow()
  • where()

1. expand()

将现有张量沿着值为1的维度扩展到新的维度。张量可以同时沿着任意一维或多维展开。如果你不想沿着一个特定的维度展开张量,你可以设置它的参数值为-1。

注意:只能扩展单个维度

# Example 1 - working 
a=torch.tensor([[[1,2,3],[4,5,6]]])
a.size()
>>torch.Size([1, 2, 3])

a.expand(2,2,3)
>>tensor([[[1, 2, 3],
[4, 5, 6]],

[[1, 2, 3],
[4, 5, 6]]])

在这个例子中,张量的原始维数是[1,2,3]。它被扩展到[2,2,3]。

2. permute()

这个函数返回一个张量的视图,原始张量的维数根据我们的选择而改变。例如,如果原来的维数是[1,2,3],我们可以将它改为[3,2,1]。该函数以所需的维数顺序作为参数。

# Example 1 - working
a=torch.tensor([[[1,2,3],[4,5,6]]])
a.size()
>>torch.Size([1, 2, 3])

a.permute(2,1,0).size()
>>torch.Size([3, 2, 1])

a.permute(2,1,0)
>>tensor([[[1],
[4]],

[[2],
[5]],

[[3],
[6]]])

在这个例子中,原始张量的维度是[1,2,3]。使用permuting,我将顺序设置为(2,1,0),这意味着新的维度应该是[3,2,1]。如图所示,张量的新视图重新排列了数字,使得张量的维度为[3,2,1]。

当我们想要对不同维数的张量进行重新排序,或者用不同阶数的矩阵进行矩阵乘法时,可以使用这个函数。

3. tolist()

这个函数以Python数字、列表或嵌套列表的形式返回张量。在此之后,我们可以对它执行任何python逻辑和操作。

# Example 1 - working
a=torch.tensor([[1,2,3],[4,5,6]])
a.tolist()
>> [[1, 2, 3], [4, 5, 6]]

在这个例子中,张量以嵌套列表的形式返回。

4. narrow()

这个函数返回一个新的张量,这个张量是原来张量的缩小版。这个函数的参数是输入张量、要缩小的维数、起始索引和新张量沿该维数的长度。它返回从索引start到索引(start+length-1)中的元素。

# Example 1 - working
a=torch.tensor([[1,2,3,4],[5,6,7,8],[9,10,11,12],[14,15,16,17]])
torch.narrow(a,1,2,2)
>> tensor([[ 3, 4],
[ 7, 8],
[11, 12],
[16, 17]])

在这个例子中,张量要沿着第2维,也就是最里面的维度缩小。它接受列表中的元素,从索引2开始,到索引3(=2+2 -1,即start+length-1)。

Narrow()的工作原理类似于高级索引。例如,在一个2D张量中,使用[:,0:5]选择列0到5中的所有行。同样的,可以使用torch.narrow(1,0,5)。然而,在高维张量中,对于每个维度都使用range操作是很麻烦的。使用narrow()可以更快更方便地实现这一点。

5. where()

这个函数返回一个新的张量,其值在每个索引处都根据给定条件改变。这个函数的参数有:条件,第一个张量和第二个张量。在每个张量的值上检查条件(在条件中使用),如果为真,就用第一个张量中相同位置的值代替,如果为假,就用第二个张量中相同位置的值代替。

# Example 1 - working
a=torch.tensor([[[1,2,3],[4,5,6]]]).to(torch.float32)
b=torch.zeros(1,2,3)
torch.where(a%2==0,b,a)
>>tensor([[[1., 0., 3.],
[0., 5., 0.]]])

这里,它检查张量a的值是否是偶数。如果是,则用张量b中的值替换,b中的值都是0,否则还是和原来一样。

此函数可用于设定阈值。如果张量中的值大于或小于某一数值,它们可以很容易地被替换。

关于Pytorch中的5个非常有用的张量操作分别是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

张量 函数 维度 索引 相同 例子 参数 条件 原始 数字 矩阵 问题 选择 有用 不同 高级 位置 元素 形式 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏根荣互联网科技 互联网和科技创新 金融科技与互联网金融 北京互联网络科技有限公司 华中科技大学互联网 睿民互联网科技 菲比寻常互联网科技 互联网巨头投资的硬核科技 互联网公司会议桌创意科技软装饰 温州喔噻互联网科技有限公司 受益于互联网科技的高速发展 银川新华互联网科技学校联系电话 华夏恒生互联网科技013171 北京市互联网新科技 广东工业互联网大赛深圳学泰科技 国产互联网科技公司 广西泛欧互联网科技有限公司 平安好医生打造互联网科技医疗 互联网高科技绘画 互联网科技快速发展优美句子 中关村互联网科技集团 互联网科技工作委员会毛军 科技创新与互联网经济 一五八零互联网科技 互联网科技生活的内容 华中科技有哪些互联网大佬 杭州披云加互联网科技有限公司 互联网科技新闻 青岛易易互联网科技 恒生科技互联网指数十大成分股
0