码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PyTorch 中各种操纵维度的函数比较 view() reshape() squeeze() unsqueeze() flatten()


    首先,假设我们有一个三行四列的张量 X:

    在这里插入图片描述

    view() 和 reshape() 函数都可以指定并改变张量的维度,它们本质上是相同的,只有两点区别:

    1、view() 函数返回的是原始张量的视图,而 reshape() 函数返回的是原始张量的视图或者副本;
    2、正因为 view() 函数返回的是视图,它要求张量数据在内存中是连续contiguous 的,而 reshape() 函数则没有这样的要求,它可以对连续张量或者非连续张量进行操作。

    在这里插入图片描述

    假设张量 Y 比 X 多了一个长度等于 1 的维度,如下:

    在这里插入图片描述

    长度为 1 的维度实际上是没有意义的,可以使用 squeeze() 自动消除所有长度为 1 的维度:

    在这里插入图片描述

    与之相反的,就是 unsqueeze() 函数,可以增加一个维度(长度等于 1):

    在这里插入图片描述
    最后,flatten() 函数的作用是展平张量,它还可以指定开始的维度和结束的维度,默认 start_dim=0, end_dim=-1,例如 Pytorch 中维度顺序为 NCHW,如果 N(batch_size) 不等于 1,就得让 start_dim = 1,只展平每个样本的 CHW,保持每个样本的独立性。

    在这里插入图片描述

    使用 view(-1) 也能实现和 flatten() 一样的功能,它们区别实际上就是 view() 函数和 reshape() 函数的区别,因为 flatten() 就是用 reshape() 实现的,看下源码即可知道。

  • 相关阅读:
    行业篇:自动驾驶场景下的数据标注类别分享
    报错:npm ERR code EPERM
    Unity与C#
    单片机学习笔记---红外遥控(外部中断)
    5. 最长回文子串
    MySQL(六)在主从复制条件下搭建读写分离
    k8s 读书笔记 - 初始化容器 Init Conatiner
    中康控股开启招股:拟募资净额3.95亿港元,预计7月12日上市
    css让元素垂直居中
    【7.27】代码源 - 【删数】【括号序列】【数字替换】【游戏】【画画】
  • 原文地址:https://blog.csdn.net/cnhwl/article/details/126329558
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号