一、python中的view()函数的用法

初学者在使用pytorch框架定义神经网络时,经常会在代码中看到:

这样的用法。

view()的作用相当于numpy中的reshape,重新定义矩阵的形状。

例1 普通用法:

import torch
v1 = torch.range(1, 16)
v2 = v1.view(4, 4)

其中v1为1*16大小的张量,包含16个元素。
v2为4*4大小的张量,同样包含16个元素。注意view前后的元素个数要相同,不然会报错。

例2 参数使用-1

import torch
v1 = torch.range(1, 16)
v2 = v1.view(-1, 4)

和图例中的用法一样,view中一个参数定为-1,代表动态调整这个维度上的元素个数,以保证元素的总数不变。因此两个例子的结果是相同的。

二、python中的shape()函数的用法

shape包含在numpy库,是矩阵(ndarray)的属性,可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组,因此相关代码如下:
import numpy as np
x = np.array([[1,2,3,4,5],[6,7,8,9,10],[10,9,8,7,6],[5,4,3]])
#输出数组的行和列数
print (x.shape) #结果: (4, 5)
#只输出行数
print (x.shape[0]) #结果: 4
#只输出列数
print (x.shape[1]) #结果: 5

import torch
input = torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]])kernel = torch.tensor([[1,2,1],[0,1,0],[2,1,0]])print(input.shape)
print(kernel.shape)

输出结果为:

三、python中的reshape()函数的用法

reshape新生成数组和原数组公用一个内存,不管改变哪个都会互相影响。

import torch
import torch.nn.functional as F
input = torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]])kernel = torch.tensor([[1,2,1],[0,1,0],[2,1,0]])input = torch.reshape(input, (1,1,5,5)) # 变成batch_size=1,channel=1,高H=5,宽W=5
kernel = torch.reshape(kernel, (1,1,3,3)) # 变成batch_size=1,channel=1,高H=5,宽W=5print(input.shape)
print(kernel.shape)

运行结果为:

四、view和reshape的区别

torch的view()与reshape()方法都可以用来重塑tensor的shape,区别是使用的条件不一样。view()方法只适用于满足连续性条件的tensor,并且该操作不会开辟新的内存空间,只是产生了对原存储空间的一个新别称和引用,返回值是视图。而reshape()方法的返回值既可以是视图,也可以是副本,当满足连续性条件时返回view,否则返回副本[ 此时等价于先调用contiguous()方法在使用view() ]。因此当不确能否使用view时,可以使用reshape。如果只是想简单地重塑一个tensor的shape,那么就是用reshape,但是如果需要考虑内存的开销而且要确保重塑后的tensor与之前的tensor共享存储空间,那就使用view()。

总之,两者都是用来重塑tensor的shape的。view只适合对满足连续性条件(contiguous)的tensor进行操作,而reshape同时还可以对不满足连续性条件的tensor进行操作,具有更好的鲁棒性。view能干的reshape都能干,如果view不能干就可以用reshape来处理。

view的存在可以显示地表示对这个tensor的操作只能是视图操作而非拷贝操作。这对于代码的可读性以及后续可能的bug的查找比较友好。

深度学习(PyTorch)——shape、view、reshape用法及其区别相关推荐

  1. [深度学习] Pytorch nn.CrossEntropyLoss()和nn.NLLLoss() 区别

    nn.NLLLoss()的参数是经过logsoftmax加工的,而CrossEntropyLoss的是原始输出数据 target = torch.tensor([1, 2]) entropy_out ...

  2. 深度学习+pytorch实战Kaggle比赛(一)——房价预测

    参考书籍<动手学深度学习(pytorch版),参考网址为: https://zh-v2.d2l.ai/chapter_multilayer-perceptrons/kaggle-house-pr ...

  3. 深度学习+pytorch自学笔记(三)——线性回归

    参考书籍<动手学深度学习(pytorch版),参考网址为:https://tangshusen.me/Dive-into-DL-PyTorch/#/ 请大家也多多支持这一个很好用的平台~ 大部分 ...

  4. pytorch 训练过程acc_深度学习Pytorch实现分类模型

    今天将介绍深度学习中的分类模型,以下主要介绍Softmax的基本概念.神经网络模型.交叉熵损失函数.准确率以及Pytorch实现图像分类.01Softmax基本概念 在分类问题中,通常标签都为类别,可 ...

  5. 动手学深度学习Pytorch Task01

    深度学习目前以及未来都有良好的发展前景.正值疫情期间,报名参加了动手学深度学习pytorch版的公开课,希望在以后的学习生活中能够灵活运用学到的这些知识. 第一次课主要包含三个部分:线性回归.soft ...

  6. 【 卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10)】

    卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10) 本章主要进行卷积神经网络的相关数学原理和pytorch的对应模块进行推导分析 代码也是通过demo实 ...

  7. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  8. 【动手学深度学习PyTorch版】12 卷积层

    上一篇移步[动手学深度学习PyTorch版]11 使用GPU_水w的博客-CSDN博客 目录 一.卷积层 1.1从全连接到卷积 ◼ 回顾单隐藏层MLP ◼ Waldo在哪里? ◼ 原则1-平移不变性 ...

  9. 深度学习PyTorch笔记(12):线性神经网络——softmax回归

    深度学习PyTorch笔记(12):线性神经网络--softmax回归 6 线性神经网络--softmax回归 6.1 softmax回归 6.1.1 概念 6.1.2 softmax运算 6.2 图 ...

  10. 【动手学深度学习PyTorch版】13 卷积层的填充和步幅

    上一篇移步[动手学深度学习PyTorch版]12 卷积层_水w的博客-CSDN博客 目录 一.卷积层的填充和步幅 1.1 填充 1.2 步幅 1.3 总结 二.代码实现填充和步幅(使用框架) 一.卷积 ...

最新文章

  1. R绘制堆叠的密度图(Stacked Area Chart)
  2. SAP LSMW 物料主数据导入毛重净重放大1000倍问题之对策
  3. Client使用c#和odp.net连接server oracle
  4. QT界面操作1:如何跟踪鼠标位置?
  5. MySQL修改用户(RENAME USER)
  6. Windows——Windows恢复环境(Windows RE)
  7. 【渝粤题库】陕西师范大学209041 金融工程学 作业(专升本)
  8. php取mysql某列的值,php – 获取MYSQL中某些列为null的表中的值
  9. Win7删除不常用的自带应用程序
  10. 克隆版JLINK-V8固件的烧录与破解
  11. 搭建证书服务器(2003)学习笔记
  12. (搬运)手机卫星通信详细科普图漫版
  13. access转换MySQL教程,如何将Access数据库转换为SQL Server
  14. 概率论与数理统计公式整理
  15. Windows、Mac环境下IDEA Maven配置和一些错误汇总(修正) tips:查找方便,仅作参考
  16. 谈判如何在谈判中_工资谈判软件开发人员指南
  17. linux系统设置开机启动,linux下设置自己的程序开机自启动
  18. 基于java springboot android安卓点餐外卖系统源码(毕设)
  19. JEP 378 Text blocks private interface methods
  20. 外网连接腾讯云mysql

热门文章

  1. FPGA开发中常见报错或警告汇总
  2. 【Gsutil】使用手册
  3. 金彩教育:详情页产品描述怎么写
  4. android 2.2 sdk 下载地址,Android SDK 2.2 离线安装
  5. selenium+python自动化84-chrome手机wap模式(登录淘宝页面)
  6. layuiAdmin自定义模块
  7. 车辆ECU综合测试系统研究
  8. Windows下获取本地IP地址的两种方法
  9. [COGS 2264]魔法传输
  10. UMail轻松搭建linux邮件服务器(一体盘安装)