gpt4 book ai didi

python - Pytorch - 在 eval() 和 train() 模式之间来回切换

转载 作者:行者123 更新时间:2023-12-05 06:23:20 26 4
gpt4 key购买 nike

我正在学习“深度强化学习”,并在学习了 pytorch 的强化学习 (DQN) 教程之后构建了自己的示例。

我按如下方式实现 Actor 的策略:1. 模型.eval()2. 从模型中获得最佳 Action 3. self.net.train()

问题是:在 eval() 和 train() 模式之间来回切换是否会对优化过程造成任何损害?

该模型仅包含 Linear 和 BatchNorm1d 层。据我所知,在使用 BatchNorm1d 时必须执行 model.eval() 才能使用模型,因为 eval() 和 train() 模式的结果不同。

训练分类神经网络时,model.eval() 仅在训练完成后执行,但在“深度强化学习”的情况下,通常使用策略,然后继续优化过程。

我想知道在模式之间来回切换是否对优化过程“无害”?

def strategy(self, state):
# Explore or Exploit
if self.epsilon > random():
action = choice(self.actions)
else:
self.net.eval()
action = self.net(state.unsqueeze(0)).max(1)[1].detach()
self.net.train()

最佳答案

eval() 将模型置于评估模式。

  1. 在评估模式下,Dropout 层只是充当“直通”层。

  2. 在训练期间,BatchNorm 层对其计算的均值和方差进行运行估计。运行总和保持默认动量 0.1。在评估期间,此运行均值/方差用于归一化。

因此,在 eval()train() 模式之间来回切换不会对优化过程造成任何损害。

关于python - Pytorch - 在 eval() 和 train() 模式之间来回切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58447885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com