动态图计算loss反向传播时是否一定要先求均值mean?
Created by: dbsxdbsx
- 版本、环境信息: PaddlePaddle版本:1.8.3 cuda 10 cudnn 7.6
根据官网的示例:https://www.paddlepaddle.org.cn/tutorials/projectdetail/593621 batch_loss应该先求均值再反向传播
但根据model项目中的示例(160,163行):https://github.com/PaddlePaddle/models/blob/release/1.8/dygraph/reinforcement_learning/actor_critic.py 则是通过fluid.layers.reduce_sum来对batch losss做的处理,而没有求均值。 经实验,若将该强化学习项目中的相关代码替换成:
avg_policy_loss = fluid.layers.mean(all_policy_loss)
avg_value_loss = fluid.layers.mean(all_value_loss)
avg_loss = avg_policy_loss + avg_value_loss
avg_loss.backward()
optimizer.minimize(avg_loss)
则收敛会变慢。
因为不清楚飞桨的optimizer.minimize
内部是否能跟踪到batch的信息,所以想求证下哪种做法是正确的,又或者都正确?