关于net.train 和 net.eval 以及加载断点模型 一些小事

本文详细介绍了PyTorch中模型训练与测试的区别,包括model.train()与model.eval()的作用,以及它们如何影响BatchNormalization和Dropout等操作。同时探讨了在训练和测试阶段神经元的不同处理方式。

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

在训练模型时会在前面加上:

model.train()
1
在测试模型时在前面使用:

model.eval()
1
同时发现,如果不写这两个程序也可以运行,这是因为这两个方法是针对在网络训练和测试时采用不同方式的情况,比如Batch Normalization 和 Dropout。

训练时是正对每个min-batch的,但是在测试中往往是针对单张图片,即不存在min-batch的概念。由于网络训练完毕后参数都是固定的,因此每个批次的均值和方差都是不变的,因此直接结算所有batch的均值和方差。所有Batch Normalization的训练和测试时的操作不同
在训练中,每个隐层的神经元先乘概率P,然后在进行激活,在测试中,所有的神经元先进行激活,然后每个隐层神经元的输出乘P。
参考
https://blog.youkuaiyun.com/u011276025/article/details/78507950
https://blog.youkuaiyun.com/u012436149/article/details/78623576
--------------------- 
作者:Never-Giveup 
原文:https://blog.youkuaiyun.com/qq_36653505/article/details/84728489 
 

 

Pytorch 权值和网络修改后如何加载预训练的权重:

https://zhuanlan.zhihu.com/p/38056115

 

今天看到一个有趣的东西:

https://blog.youkuaiyun.com/mmmmmttttff/article/details/51218089

`model.train()` `model.eval()` 是PyTorch模型中用于设置模型运行模式的关键方法。它们的主要区别在于: 1. **模式更改**: - **train()**: 当调用这个方法时,模型会进入训练模式。在这种模式下,模型会启用一些训练相关的特性,如批量归一化(batch normalization)通常会在训练期间跟踪均值方差,而不是在每个批次之间重新计算。 2. **行为差异**: - ** Dropout**: dropout层只在训练阶段随机关闭部分神经元以防止过拟合,在`model.train()`模式下会被激活。 - **梯度计算**: - train()模式下,模型对输入的梯度有影响,因此可以更新权重。 - eval()模式下,模型默认不计算梯度,这对于验证集或推理时的性能优化很重要,因为计算梯度可能会增加内存消耗计算时间。 3. **内部状态**: - model.eval()会禁用某些内部状态改变,比如BN层可能不会更新其统计信息,保持固定的规范化参数,这有助于在评估时获得更一致的结果。 4. **速度内存**: - eval()模式下的模型通常更快,因为它不计算梯度,而且某些层(如dropout)会被禁用。 使用示例: ```python # 初始化模型 model = MyModel() # 训练模式(准备进行反向传播) model.train() optimizer.zero_grad() # 清空梯度 outputs = model(inputs) # 运行模型并获取结果 loss = criterion(outputs, targets) # 计算损失 loss.backward() # 反向传播 optimizer.step() # 更新权重 # 测试或评估模式(无梯度计算) model.eval() with torch.no_grad(): # 防止不必要的梯度计算 predictions = model(test_inputs) test_loss = criterion(predictions, test_targets) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值