(4)Pytorch模型model.train() model.eval()的区别

Pytorch:model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

思考

1、BN的好处? dropout的好处?

提高网络稳健性,避免网络过分依赖部分神经元。

2、model.train() 应该放在什么位置?

每个训练的 batch 中都需要进行。

/ ------- / ------- / ------- / ------- / ------- / ------- / ------- / ------- /

pytorch测试的时候为何要加上model.eval()?

eval() 时,框架会自动把 BN 和 DropOut 固定住,不会取平均,而是用训练好的值,不然的话,一旦 test 的 batch_size 过小,很容易就会被 BN 层导致生成图片颜色失真极大!

在这里插入图片描述

eval 阶段,模型中使用的 dropout 或者 batch norm 失效,直接都会进行预测。

使用 no_grad 则让梯度 Autograd 设置为 False(因为在训练中我们默认是 True),保证了反向过程为纯粹的测试不变参数。

no_grad 避免每一个参数都要设置,解放了 GPU 底层的时间开销,在测试阶段统一梯度设置为 False 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值