batch norm 连续测试 n 个 pass,和 n 个pass 逐一测试结果不一致
Created by: lcy-seso
Batch Normalizaiton layer,batch_norm_type=“batch_norm”,use_global_stats=True。 测试使用训练集上保存的 mean 和 std 的 moving average。
走 paddle_trainer 的job=test,trainer_count=4,使用gpu 连续测试 N 个保存的pass。以下两种测试方法测试相同的数据,但差异很大。
- 方法一: 指定 num_passes 和 test_pass,测试 test_pass ~ num_passes 之间的 N 个连续的 pass
- 方法二: 指定 num_passes = test_pass + 1 ,每次只测试一个 pass,重启测试任务 N 次;
使用方法二测试,测试的第一个pass与使用方法一测试的测结果相同; 但是,测试到第二个pass 时,测试结果和使用方法一测试的第2个pass结果有非常大的差别,怀疑是不是 mean 和 std 没有固定住 ? 或者还有其他参数需要设置。
测试效果如下图所示: 图片的上半部分是连续测试 pass 0 和 pass 1,下半部分是只测试 pass 1;