PyTorch|view(),改变张量维度

在构建自己的网络时,了解数据经过每个层后的形状变化是必须的,否则,网络大概率会出现问题。PyToch张量有一个方法,叫做view(),使用这个方法,我们可以很容易的对张量的形状进行改变,从而符合网络的输入要求

view()的基本用法很简单,只需传入想要的形状即可,

就像这样:

复制代码
import torchT1=torch.arange(0,16)print(T1)print(T1.size())
tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])torch.Size([16])
a=T1.view(4,4)b=T1.view(2,8)print(a)print(a.size())
print(b)print(b.size())
tensor([[ 0,  1,  2,  3],        [ 4,  5,  6,  7],        [ 8,  9, 10, 11],        [12, 13, 14, 15]])torch.Size([4, 4])
tensor([[ 0,  1,  2,  3,  4,  5,  6,  7],        [ 8,  9, 10, 11, 12, 13, 14, 15]])torch.Size([2, 8])

当然,在看一些代码时,往往会发现view()中有参数-1。看下面几个例子​​​​​​​

复制代码
c=T1.view(-1,4,4)print(c)print(c.size())tensor([[[ 0,  1,  2,  3],         [ 4,  5,  6,  7],         [ 8,  9, 10, 11],         [12, 13, 14, 15]]])torch.Size([1, 4, 4]​​​​​​​

d=T1.view(-1,8)print(d)print(d.size())tensor([[ 0,  1,  2,  3,  4,  5,  6,  7],        [ 8,  9, 10, 11, 12, 13, 14, 15]])torch.Size([2, 8])​​​​​​​

e=T1.view(8,-1)print(e)print(e.size())tensor([[ 0,  1],        [ 2,  3],        [ 4,  5],        [ 6,  7],        [ 8,  9],        [10, 11],        [12, 13],        [14, 15]])torch.Size([8, 2])

通过上述几个例子,view中一个参数定为-1,代表自动调整这个维度上的元素个数,同时保证元素的总个数不变当然,我们也注意到了这个细节:传入几个参数,代表结果有几个维度

对于这篇文章:张量扁平化------CNN的Flatten操作

保持batch轴不变,展平其它轴,我们采用的是flatten()方法,这里我们用view()方法。​​​​​​​

复制代码
t1=torch.rand([5,3,128,128])print(t1.size())
torch.Size([5, 3, 128, 128])​​​​​​​

t2=t1.view(5,-1)print(t2)print(t2.size())

结果符合我们的预期!

相关推荐
我材不敲代码几秒前
OpenCV+Dlib实战:人脸检测 + 表情识别 + 年龄性别预测
人工智能·opencv·计算机视觉
ModelWhale几秒前
从“社区”到“生态”:和鲸科技CEO范向伟在InnovateX大赛揭示OPC孵化“正确路径”
大数据·人工智能·科技
Binary_ey1 分钟前
车载 AR-HUD 虚像不清晰?OAS软件跨尺度仿真来助力
人工智能·ar·软件需求·光学设计·光学软件
YJlio2 分钟前
Sysinternals实战教程专栏介绍:这不是一本到此为止的书,而是一套看穿 Windows 的排障方法
windows·python·电脑·outlook·windows部署·eixv3·pe装机
博.闻广见2 分钟前
AI_线性代数-1.矩阵
人工智能·线性代数·矩阵
xiaoduo AI3 分钟前
客服机器人知识库多久更新一次?智能 Agent 自动爬取新问答,过期话术能否及时淘汰?
大数据·人工智能·机器人
好运的阿财4 分钟前
OpenClaw工具拆解之 sessions_list+sessions_history
人工智能·python·程序人生·ai·ai编程·openclaw
Ulyanov5 分钟前
打造现代化雷达电子对抗仿真界面 第三篇:综合电子战指挥控制台——多视图协同与插件化架构
python·架构·系统仿真·雷达电子战
Westward-sun.5 分钟前
OpenCV 疲劳检测实战:用 dlib 计算眼睛纵横比 (EAR)
人工智能·opencv·计算机视觉·视觉检测
AI周红伟5 分钟前
Hermes Agent 工具-周红伟
linux·网络·人工智能·腾讯云·openclaw