当前位置: 首页 > news >正文

Pytorch使用permute后再reshape会修改张量的值,维度虽然对齐但仍需小心

楼主最近阅读一篇论文的代码,在修改的时候发现loss下降正常但评测指标怎么都上不去,经过两天的排查找到原因。
这篇论文的代码在模型预测之后使用了permute和reshape,导致我模型的预测和预想的完全不一样,示例如下:

predict=model(train).permute(0,1,3,2).reshape(-1,n,66)

虽然表面上看用不用permute最后经过reshape得到的维度都是一样的,也能对其,后续工作也能展开,但问题就在这里,使用了permute后再reshape里面的值会完全不一样,导致虽然没有bug但后续工作受阻

举个例子:
先创建一个[2,3,3]的张量:

在这里插入图片描述
然后一个使用permute一个不用,最后都使用reshape得到一样的维度
在这里插入图片描述
可以看到,虽然a和b都是3✖6的张量,但内容却完全不一样了,所以有时候维度虽然对齐了也是有问题的

导致这种情况的原因是permute会直接修改矩阵的维度,permute(1,0,2)相当于交换0,1两个维度,即将[2,3,3]改变为[3,2,3],原来是2块,每块里面3行3列,现在是3块,每块里面2行3列,之前两块里面的每两行组成了新的一块,而reshape则是将一块一块拆开后重新排列组合,最终导致了值的不同:
在这里插入图片描述
所以如果在模型预测之后你的代码依然有permute函数和reshape函数,需要注意后续的评测标准,因为模型预测的值可能已经被修改了,最后你可能会因为精确度太差而怀疑是不是模型写错了

相关文章:

  • 排序及其代码详解~
  • 欧拉公式的三种证明方法:导数、幂级数、极坐标
  • MQ消息的自动应答和手动应答| RabbitMQ系列(三)
  • 【C++初阶】C++入门(一)
  • 【面试题总结】分布式锦集
  • PostgreSQL执行计划获取与修改
  • 大幅提升CLIP图像分类准确率-Tip-Adapter
  • CCF- CSP历年认证考试题目链接+题解总结(持续更新)
  • 泛型、IO流 和 网络编程
  • 这些Java基础知识,诸佬们都还记得嘛(学习,复习,面试都可)
  • SSM《程序设计基础》课程答疑系统的设计与实现 毕业设计-附源码261620
  • R语言使用order函数按照两个数据列的值排序data.table数据(主变量升序排序、次变量降序排序)
  • Java Web 2 数据库 2.1 数据库相关概念 2.2 常见的关系型数据库管理系统 2.3 MySQL 数据库
  • DP58 红和蓝
  • grafana+prometheus+(采集节点)实现监控Linux服务器,JVM,Postgres
  • 【Leetcode】101. 对称二叉树
  • Docker容器管理
  • ES6简单总结(搭配简单的讲解和小案例)
  • FineReport中如何实现自动滚屏效果
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Javascript 原型链
  • markdown编辑器简评
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python连接Oracle
  • Vue2 SSR 的优化之旅
  • 半理解系列--Promise的进化史
  • 和 || 运算
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 新书推荐|Windows黑客编程技术详解
  • 移动端高清、多屏适配方案
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #laravel 通过手动安装依赖PHPExcel#
  • #NOIP 2014# day.1 T2 联合权值
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (003)SlickEdit Unity的补全
  • (6)STL算法之转换
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (简单) HDU 2612 Find a way,BFS。
  • (六)激光线扫描-三维重建
  • (学习日记)2024.01.09
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .Net 8.0 新的变化
  • .NET 中 GetProcess 相关方法的性能
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .Net的DataSet直接与SQL2005交互
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @FeignClient注解,fallback和fallbackFactory
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh