深度学习:记一次由model.train() 引发的模型训练效果变差事故

记一次由model.train() 引发的模型训练效果变差事故

详情说明

在参考多份github代码复现深度学习模型时,完成后发现模型可以正常跑起来,但效果和模型原始论文效果差距有点大。

  • 【❌】一开始以为是模型使用最新的torch函数导致的错误,然后将直接使用参考的模型代码,但结果还是有问题。
  • 【❌】发现数据集使用的处理版本不一样,改为原始论文的数据集。但实验结果还是有问题。
  • 【❌】发现计算acc方式不一致,切换后发现结果没有变化,还是有问题。
  • 【✌️】排除以上因素后,只能是训练代码有问题了,经过一步步替换代码,原来是 model.train() 位置放错误了,应该放在epoch循环里面的。如果放在外面,因为每次epoch评估模型时都使用model.eval(),导致 model.train()只起一次作用。

样例

错误

model.train()
for epoch in range(epochs):
	# xxx 模型运行和反向传播
	# 模型评估
	evaluate(model, data)
	
def evaluate(model, data):
	model.eval()
	# xxx 模型测试	

正确

for epoch in range(epochs):
	model.train()
	# xxx 模型运行和反向传播
	# 模型评估
	evaluate(model, data)
	
def evaluate(model, data):
	model.eval()
	# xxx 模型测试	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值