torch x = x.view(x.size(0),-1)的理解

举报
悲恋花丶无心之人 发表于 2021/02/03 00:41:11 2021/02/03
【摘要】 目录 一、概述 二、代码展示 一、概述 1.在torch的网络定义部分的forward(self,x)中有可能会出现下面这句话: x = x.view(x.size(0),-1) 2.这句话的意思是将多维度的Tensor展平成一维,但是到底转换的样子是什么样的其实我们这样看并不明白 二、代码展示 1.我们先定义一个Tensor: import torch...

目录

一、概述

二、代码展示


一、概述

1.在torch的网络定义部分的forward(self,x)中有可能会出现下面这句话:

 x = x.view(x.size(0),-1)
 

2.这句话的意思是将多维度的Tensor展平成一维,但是到底转换的样子是什么样的其实我们这样看并不明白

二、代码展示

1.我们先定义一个Tensor:


  
  1. import torch
  2. a = torch.arange(1,17)

2.输出这个Tensor的内容和大小:


  
  1. print(a)
  2. print(a.size(0))

代码变为:


  
  1. import torch
  2. a = torch.arange(1,17)
  3. print(a)
  4. print(a.size(0))

结果为:

                               

3.使用

 x = x.view(x.size(0),-1)
 

将Tensor转换为1维

输入代码:


  
  1. b = a.view(a.size(0),-1)
  2. print(b)

代码变为:


  
  1. import torch
  2. a = torch.arange(1,17)
  3. print(a)
  4. print(a.size(0))
  5. b = a.view(a.size(0),-1)
  6. print(b)

结果为;

                                    

其中这个-1指的是不知道多少列的情况下,根据原来Tensor内容和Tensor的大小自动分配列数

4.换句话,和我们这样做的效果是一样的,即指定列数为1:


  
  1. c = a.view(a.size(0),1)
  2. print(c)

代码变为:


  
  1. import torch
  2. a = torch.arange(1,17)
  3. print(a)
  4. print(a.size(0))
  5. b = a.view(a.size(0),-1)
  6. print(b)
  7. c = a.view(a.size(0),1)
  8. print(c)

结果为:

                                     

结果果然是一样的。

5.我们还可以将行数不定(为1)指定列数为Tensor的大小


  
  1. d = a.view(-1, a.size(0))
  2. print(d)

代码变为:


  
  1. import torch
  2. a = torch.arange(1,17)
  3. print(a)
  4. print(a.size(0))
  5. b = a.view(a.size(0),-1)
  6. print(b)
  7. c = a.view(a.size(0),1)
  8. print(c)
  9. d = a.view(-1, a.size(0))
  10. print(d)

结果为;

                                   

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/86569501

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。