pytorch 踩坑

pytorch 踩坑

在pytorch中,如果你定义了没用的组件,同样也会影响你的模型(我也不知道从哪里影响的),看一个例子

    def _make_layer(self, block, planes, blocks, stride=1, dilate=False):norm_layer = self._norm_layer#downsample = Noneprevious_dilation = self.dilationif dilate:self.dilation *= stridestride = 1# if stride != 1 or self.inplanes != planes:#     downsample = layer.SeqToANNContainer(#             nn.Conv2d(self.inplanes, planes, kernel_size=1, stride=stride),#             norm_layer(planes),#         )layers = []layers.append(block(self.inplanes, planes, stride))self.inplanes = planes for _ in range(1, blocks):layers.append(block(self.inplanes, planes))return nn.Sequential(*layers)

这是传统的一个_make_layer,可以看到我把其中的downsample给注释掉了,他其实是个没用的组件,我之前也没管它,我没注释前,第一个epoch
在这里插入图片描述
注释后
在这里插入图片描述
就是他其实是不参与整体模型的,但是就是会影响,我估计是影响整体模型的初始化啥的了?说不定到最后等模型收敛了结果会是差不多的。。这里我就不验证了,如果有大神看到的话可以验证一下告诉我结果,感谢!!

动机是因为,我自己写了个pytorch网络结构,然后我想写成大家都在写的这种格式,就是都封装起来,结果我发现模型结构一样,为什么两个跑的结果不一样呢,初始化和随机种子我都设置了,于是我就想去找到底哪里有问题,后面就一步步的发现了这个问题,怎么说呢,虽然最后两边的结果还是有差异,但是不多,可能还是因为一些组件的定义、组件的顺序、以及其他很小的因素都会有影响,因此在这里劝大家代码还是要写规范,这样才和别人的baseline有的比~

我一天都在调这个bug,我就在想,两个同样结构的网络,我设置了同样的随机种子和初始化,怎么会结果不同呢?
经过我一天的实验发现,你网络层定义的位置,是否创建这个网络层,都会对结果有影响,例如,如果我的downsample是通过函数传递给basicblock和我直接在函数里定义downsample,那么这样跑出来的结果还是不一样,经过两个downsample定义的方式是一样的

最后希望大家不要想我一样硬钻牛角尖,因为这样其实到头来发现不是模型的问题而是本身pytorch的问题感觉有些浪费时间,但又希望大家可以适当的钻牛角尖,毕竟一切的结果都来源于大家的坚持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外卖系统开发:构建高效、安全的外卖平台

在当今数字化时代,外卖系统成为了餐饮行业不可或缺的一部分。本文将介绍如何使用一些主流的技术和代码片段来开发一个简单而功能强大的外卖系统。 1. 技术选择 在开始外卖系统的开发之前,首先需要选择合适的技术栈。以下是一个常见的技术栈&#xff1…

新型智慧城市解决方案:PPT全文56页,附下载

关键词:智慧城市解决方案,智慧城市管理技术,智慧城市建设,数字城市建设 一、智慧城市宏观形势 1、政策支持:出台了一系列政策,鼓励和支持智慧城市的发展。这些政策为智慧城市的建设提供了政策保障和资金支…

贪心算法实现

1、概述 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而 希望导致结果是最好或最优的算法。 贪心算法的每一步都是基于当前状态下的最优解来选择下一步,因此它不能保证全局最优 解&#xff0c…

小区物业大数据监控服务平台(PSD文件资料)

现分享简约物业大数据平台页面、小区物业大数据监控服务平台模版的UI源文件,供设计师们快速获取PS源文件完成工作。 若需 更多行业 相关的大屏,请移步小7的另一篇文章:200套精选数据可视化大屏,大屏PSD设计(各行业大屏…

ACE中为socket增加keepalive策略(windows和linux)

0、现象描述 在国产麒麟系统下,基于ACE的tcp-socket,如果长时间不操作,则会自动切断连接,经测试发现,这个时间的上限为30分钟(几乎不差1秒) 经查看/proc/sys/net/ipv4/tcp_keepalive_time=7200,按说是2小时,但测试发现就是30分钟。索性,就通过程序来动态设置keepaliv…

PHP-FPM 的主要作用和功能:

管理 PHP 进程池: PHP-FPM 负责启动和管理 PHP 进程池。进程池是一组 PHP 进程,它们等待来自 Web 服务器的请求。PHP-FPM 可以根据配置中的参数来动态调整进程池的大小,以适应不同的负载情况。 处理 FastCGI 请求: PHP-FPM 使用 F…

ssh工具 向指定的ssh服务器配置公钥

此文分享一个python脚本,用于向指定的ssh服务器配置公钥,以达到免密登录ssh服务器的目的。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,确认 or 选择ssh服务器 👇第三步,输入ssh登录密码,以完成公钥配置 👇验证,我们通过ssh登录…

python区块链简单模拟【03】

引入钱包,账户地址,公私钥 # 导入椭圆曲线算法 from ecdsa import SigningKey, SECP256k1, VerifyingKey, BadSignatureError import binascii import base64 from hashlib import sha256class Wallet:"""钱包"""def __i…

(1)(1.11) SiK Radio v2(一)

文章目录 前言 1 概述 2 特点 3 状态LED灯 前言 SiK 遥测无线电是在自动驾驶仪和地面站之间建立遥测连接的最简单方法之一。本文提供了如何连接和配置无线电的基本用户指南。 3DR Radio v2(SiKRadio 的消费者版本) !Note 本页面以前的…

企业跨境数据传输的创新技术和应用领域

在当前数字化时代,跨境数据传输成为一个极为关键的领域。随着数据传输需求的不断增加,跨国企业在这一过程中面临着越来越多的问题。为了解决这些挑战,创新技术层出不穷,为跨境数据传输提供了更高效、安全和可靠的解决方案。本文将…

visual studio code B站教程:GPT4

B站教程:AI编程辅助神器-CodeMoss使用介绍_哔哩哔哩_bilibili 通用 General 按 Press 功能 Function Ctrl Shift P,F1 显示命令面板 Show Command Palette Ctrl P 快速打开 Quick Open Ctrl Shift N 新窗口/实例 New window/instance Ctrl Sh…

经验 | IDEA常用快捷键

1、编辑(Editing) Ctrl Space 基本的代码完成(类、方法、属性) Ctrl Alt Space 快速导入任意类 Ctrl Shift Enter 语句完成 Ctrl P 参数信息(在方法中调用参数) Ctrl Q 快速查看文档 Shift F…

Flink CDC 1.0至3.0回忆录

Flink CDC 1.0至3.0回忆录 一、引言二、CDC概述三、Flink CDC 1.0:扬帆起航3.1 架构设计3.2 版本痛点 四、Flink CDC 2.0:成长突破4.1 DBlog 无锁算法4.2 FLIP-27 架构实现4.3 整体流程 五、Flink CDC 3.0:应运而生六、Flink CDC 的影响和价值…

腾讯云4核8G服务器选择轻量还是标准型S5服务器?

腾讯云4核8G服务器优惠价格表,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,轻量应用服务器4核8G12M带宽一年446元、529元15个月,阿腾云atengyun.com分享腾讯云4核8G服务器详细配置、优惠价格及限制条件&…

whistle网络监控 fiddler的开源替代

github源码:https://github.com/avwo/whistle 官网说明:http://wproxy.org/whistle/ windows/mac一键安装 先安装nodejs 然后运行命令 npm i -g whistle && w2 start --init启动 w2 start停止 w2 stop注意停止后要手动关闭代理服务器设置 w…

【免杀测试】Kali之Metasploit几款工具免杀练习

余磊 不知攻,焉知防。作为渗透测试攻城狮,实战之前要做大量的攻防练习。一般黑客拿到主机的shell之后,需要留后门方便进行下一步的渗透。普通的木马已经很容易被查杀工具识别,这时就催生出了免杀技术来绕过杀毒软件。 下面就尝试…

为什么需要升级EKS

当谈到在云环境中管理容器化应用程序时,Amazon EKS(Elastic Kubernetes Service)是一个备受欢迎的选择。它为用户提供了一个强大且高度可扩展的平台,使他们能够轻松地在Kubernetes上运行和管理应用程序。随着技术的不断发展&#…

[hive] sql中distinct的用法和注意事项

在 Hive SQL 中,DISTINCT 用于去重查询结果中的行。它返回唯一的行,消除结果集中的重复项。以下是 DISTINCT 的基本用法和一些注意事项: 基本用法: -- 获取列1和列2的唯一组合 SELECT DISTINCT column1, column2 FROM your_tabl…

前端性能优化十五:js优化的总体原则

1. js优化的总体原则: ①. 当需要时才优化:a. 项目到了某个阶段才需要优化.(1). 大的改版、代码架构无法满足现有业务.②. 考虑可维护性:a. 考虑团队的开发水平、规范.b. 不是为了优化牺牲了后续的可维护性.(1). 提升JS文件的加载性能: ①. 加载元素的顺序:a. css文件放在<…