PyTorch中view的用法

相当于numpy中resize()的功能,但是用法可能不太一样。

我的理解是:

把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。比如,

a=torch.Tensor([[[1,2,3],[4,5,6]]])
b=torch.Tensor([1,2,3,4,5,6])

print(a.view(1,6))
print(b.view(1,6))

得到的结果都是tensor([[1., 2., 3., 4., 5., 6.]]) 

再看一个例子:

a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.view(3,2))

将会得到:

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

相当于就是从1,2,3,4,5,6顺序的拿数组来填充需要的形状。但是如果您想得到如下的结果:

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

就需要使用另一个函数了:permute()。用法参见我的另一篇博客:PyTorch中permute的用法

另外,参数不可为空。参数中的-1就代表这个位置由其他位置的数字来推断,只要在不致歧义的情况的下,view参数就可以推断出来,也就是人可以推断出形状的情况下,view函数也可以推断出来。比如a tensor的数据个数是6个,如果view(1,-1),我们就可以根据tensor的元素个数推断出-1代表6。而如果是view(-1,-1,2),人不知道怎么推断,机器也不知道。还有一种情况是人可以推断出来,但是机器推断不出来的:view(-1,-1,6),人可以知道-1都代表1,但是机器不允许同时有两个负1。

如果没有-1,那么所有参数的乘积就要和tensor中元素的总个数一致了,否则就会出现错误。

(0)

相关推荐

  • 机器学习的权利要求撰写

    在看到这个新技术的时候,首先去检索一下机器学习的基本概念,使用任何一个搜索引擎都可以,我们将机器学习作为关键字输入到搜索引擎中,就可以得到检索结果,我摘抄了一点如下: 机器学习可以分成下面几种类别: ...

  • Pytorch教程:新手的快速指南

    11分钟阅读 > Image Source: Author Python被确定为数据科学和机器学习的进入语言,部分感谢开源ML库Pytorch. Pytorch的功能强大的深度神经网络建筑工具和 ...

  • 【Deep Learning with PyTorch 中文手册】(八)Tensors and storages

    Tensors and storages 在本节中,我们将开始探讨张量存储的内部实现.张量的值被分配在连续的内存块中,由torch.Storage管理.一块存储指的是存储数据的一维数组,例如包含给定类 ...

  • Pytorch实战:使用RNN网络对姓名进行分类

    项目地址:https://github.com/spro/practical-pytorch 项目作者: spro 翻译: 大邓 注意:文章末尾有jupyter notebook获取方式 本文我们构建 ...

  • 牛刀小试之用pytorch实现LSTM

    LSTM参数 首先需要定义好循环网络,需要nn.LSTM(),首先介绍一下这个函数里面的参数 LSTM数据格式: num_layers: 我们构建的循环网络有层lstm num_directions: ...

  • 【Pytorch 】nn 模块中的网络层介绍

    ❞ 1.写在前面 疫情在家的这段时间,想系统的学习一遍 Pytorch 基础知识,因为我发现虽然直接 Pytorch 实战上手比较快,但是关于一些内部的原理知识其实并不是太懂,这样学习起来感觉很不踏实 ...

  • 【Deep Learning with PyTorch 中文手册】(九)Size,Offset,Strides

    Size, storage offset, and strides 为了索引到内存中,张量依赖于一些信息,这些信息明确地定义了:尺寸大小,内存偏移量和单位步长(见下图).存储尺寸大小信息的变量(Num ...

  • Pytorch - TORCH.NN.INIT 参数初始化的操作

    这篇文章主要介绍了Pytorch - TORCH.NN.INIT 参数初始化的操作,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧路径:https://pytorch.org/docs ...

  • 根管治疗中碘制剂的用法 :

    周佳齐医生: 给自己平时看资料的一个总结,希望都可以用的到. 根管治疗中碘制剂对于残髓的作用: 根管治疗过程中,常遇到残髓不容易清除干净的问题.我的经验是,先用碘酚导入根管,两分钟后用拔髓针试试,多数 ...

  • 古法中“委中”的用法(续)

    点击加载图片 巨灵,与元气齐升,为九元真母 前一篇文章中讲到了委中的古法运用→ 腰痛的分型,委中在治疗腰痛上的作用和禁忌,本文继续引经据典,讲述委中的多种用法,黄贵生老师经常利用夜间打坐前后的空档时间 ...

  • 奇门遁甲知识 | 详解天三门地四户在奇门遁甲中的正确用法与十二月建应用点窍

    奇门遁甲预测中天三门地四户的方法主要是运用于择吉. 天三门是上天的通道,是查天上的事,起运改运用的. 地四户是入地的四条通道,用于查地下的事,阴间的事和过阴的事. 一.天三门 天三门的查法:天三门就是 ...

  • 英语语法:外刊中spend的用法

    ‍‍ 上几期:卫报:疫情期间3000万人在学习数字技能.美国大规模制裁俄罗斯并驱逐外交官.如何思考:你从未学过的一项技能.如何思考:你从未学过的一项技能(2).如何思考:你从未学过的一项技能(3) 关 ...

  • C++ 中 static 的用法静态成员变量

    对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响.例如有两个相同类型的对象 a.b,它们都有一个成员变量 m_name,那么修改 a. ...

  • C++ 中 static 的用法

    在类中,static 除了可以声明静态成员变量,还可以声明静态成员函数.普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只可以访问静态成员. 编译器在编译一个普通成员函数时,会隐式 ...

  • 字中六合的用法详解, 地支六合如何运用

    地支六合比较复杂,分为合来.合去.合绊,并且还分合吉.合凶,绝非一般的八字命书上说的,看到六合就说好,试想,得病了,是否也是和疾病相合,如何能好,八字中六合的用法详解如下:  1.合来 从字面的意思 ...

  • OpenCV中cv2的用法

    一.读入图像 使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整路径 flags:读入图片的标志  cv2.IMREAD_COLOR:默认参数 ...

  • VB中Execute的用法

    Public Sub ExecuteX() Dim strsqlChange As String Dim strsqlRestore As String Dim strCnn As String Di ...