前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >paddle深度学习5 向量的维度变换

paddle深度学习5 向量的维度变换

原创
作者头像
用户11104668
发布2025-01-11 10:05:48
发布2025-01-11 10:05:48
880
举报
文章被收录于专栏:paddle深度学习paddle深度学习

对于Tensor数据类型而言,有的时候,我们需要改变向量的形状,以满足计算要求

例如:向量的变形、转置、压缩、解压等,属于基本的向量维度变换操作

下面将对向量的维度变换操作进行介绍

【reshape()】

在numpy中就有reshape方法,用于对数组进行变形

paddle中沿用了这个方法名,可以达到类似的效果

import paddle

a=paddle.arange(1,7)

b=paddle.reshape(a,(2,3))

print(a)

print(b)

reshape的第一个参数为原向量,第二个参数为一个元组,它描述了新向量的形状

注意元组的元素总数要与原向量一致

【unsqueeze()】

unsqueeze()方法将对向量进行维度扩充,在指定的轴增加一个维度

import paddle

a=paddle.rand((3,4))

b=paddle.unsqueeze(a,axis=0)

print(a.shape)

print(b.shape)

原向量的形状为(3,4)

我们这里给他在0轴增加了一个维度,从一个二维向量变成了一个三维向量

【squeeze()】

squeeze()方法与unsqueeze()方法正好相反,它的作用是减少一个维度

但要注意,被删除的维度尺寸必须为1

import paddle

a=paddle.rand((3,1,4))

b=paddle.squeeze(a,axis=1)

print(a.shape)

print(b.shape)

可以看到,squeeze()方法使用后,第1维消失了,向量从三维被降成了二维

【t()】

t()方法用于向量的转置

转置是一种改变向量维度顺序的操作,通常用于交换矩阵的行和列。

在数学上,转置操作将矩阵的行转换为列,列转换为行

import paddle

a=paddle.reshape(paddle.arange(1,13),(3,4))

b=paddle.t(a)

print(a)

print(b)

通过转置,原矩阵a从一个3*4矩阵变换成了4*3矩阵

并且每一行的元素被换到了每一列

即0轴和1轴进行了对调

【transpose()】

transpose()方法可以用于更加高维度的向量转置

import paddle

a=paddle.rand((2,3,4))

b=paddle.transpose(a,(2,0,1))

print(a.shape)

print(b.shape)

transpose()方法的第一个参数为原向量,第二个参数是一个元组,元组代表新向量的轴顺序

原本的(0,1,2)轴顺序被调换为了(2,0,1)

因此向量的形状也从(2,3,4)变成了(4,2,3)

【expand()】

`paddle.expand()是PaddlePaddle框架中的一个函数,用于将Tensor沿着指定的维度进行扩展。这个操作在不增加数据量的情况下,允许你改变Tensor的形状,使其在某些维度上具有更大的尺寸。这在处理不同形状的Tensor时非常有用,尤其是在广播机制中。

功能:paddle.expand 会将输入张量沿着某些维度复制多次,使其形状变为目标形状。

适用场景:当你需要将一个张量的形状扩展到更大的形状时,可以使用这个函数。

示例

假设你有一个形状为 [2, 1] 的张量

import paddle

x = paddle.to_tensor([[1], [2]])

expanded_x = paddle.expand(x, [2, 3])

print(x.shape)

print(expanded_x)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档