同样的随机种子,前几次可以复现,但不知道动了哪里,复现不了以前的结果了

本文探讨了在使用相同随机种子的情况下无法复现模型结果的问题,并提供了详细的排查步骤,包括检查模型设置、网络结构及初始化过程等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同样的随机种子,前几次可以复现,但昨天突然就复现不了了。
可以按照以下步骤检查一下:
1.首先检查各种设置,如batch size , learning rate、优化器等等。
如果以上各种设置都没问题那么问题极大概率还是出在模型里面了。
2.然后如果使用的是pytoch框架的话可以检查forwad()函数中模型整体的网路结构和以前是否一样(不能有一丝偏差)。
3.最后检查在forwad()中使用的模块、层在__init__()中是否有偏差。在这里需要特别注意一个问题,我的问题就是出现在这里。因为我昨天在__init__()中额外定义了一个层,但这个层并没有用到我现有的网络结构中,所以并没有在意它,没有把它注释掉,但就是因为这个小问题导致结果不能复现。因为一个固定的随机种子就固定了一种初始化的随机性,初始化是在__init__()函数中进行的,而这里面突然多了一层,虽然它没有影响到我的网络结构,但是网络会对其进行初始化从而打乱了后面一些层的初始化,使得虽然使用了同一个随机种子但是同一网络进行了不同的初始化从而使得结果不同。解决方法是注释掉这多余的一层或者可以放到if语句中。

当然在改动代码前最好对原有代码进行,因为总是会有稀奇古怪的的东西影响到随机性。例如后来我在main函数中使用了torchsummary.summary(net, input_size=(3, 256, 256), batch_size=4)来输出模型的一些东西,后来发现使用随机种子复现不了结果了,找了半天才找到是这里的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值