Paddle 02.recognize_digits的示例,不同paddle版本准确率不同

9vw9lbht  于 2021-11-29  发布在  Java
关注(0)|答案(8)|浏览(369)

三个机器和paddle版本环境:

  1. cpu机器,cpu版本paddle,cpu模式
    a)PaddlePaddle版本:0.14.0(内网一键安装paddlepaddle-0.14.0-cp27-cp27mu-manylinux1_x86_64.whl)
    b)系统环境:CentOS release 4.3 (Final)
    c) 单机训练
    d) 准确率:89.98%
  2. gpu机器,cpu版本paddle,cpu模式
    a)PaddlePaddle版本:1.2.0(内网一键安装paddlepaddle_gpu-1.2.0.post87-cp27-cp27mu-linux_x86_64.whl)
    b)系统环境:CentOS release 6.3 (Final)
    c) 单机训练
    d) 准确率:89.93%
  3. gpu机器,gpu版本paddle,gpu模式
    a)PaddlePaddle版本:1.2.0(内网一键安装paddlepaddle_gpu-1.2.0.post87-cp27-cp27mu-linux_x86_64.whl)
    b)系统环境:CentOS release 6.3 (Final)
    c) 单机训练
    d) 准确率:90.39%

注:以上结果均为Softmax回归模型结果,除paddlepaddle安装版本外其他完全一致,且都是训练10轮平均准确率;其中主要是1.2版本(无论cpu or gpu cpu和gpu相差不大)比0.14版本准确率低,想问下这是否是一个已知问题?还是我打开方式不对?

ggazkfy8

ggazkfy81#

可能一些op有调整,或者optimizer 内部的优化算法不太一样,不一定是问题。

建议训练到收敛,看最终效果是否能打平

weylhg0b

weylhg0b2#

ok 我这边check下 训练到收敛再看下

uplii1fm

uplii1fm3#

尝试把代码中的配置PASS_NUM改为了100,分别在环境1和3中测试运行,最终得出的准确率结果差不多(91.5%左右)。只不过在环境1下,选取的最好结果是14轮;在环境3下选取的最好结果是99轮。

1rhkuytd

1rhkuytd4#

这个辛苦 @chengduoZH 帮看下是否合理

ldxq2e6h

ldxq2e6h5#

@kjfren1985 02.recognize_digits 中的随机数没有固定, 所以每次跑时参数初始化是不一样的,你可以将default_startup_program中的随机数固定下来试试。

fluid.default_startup_program().random_seed=1
    exe.run(fluid.default_startup_program())
    main_program = fluid.default_main_program()
    epochs = [epoch_id for epoch_id in range(PASS_NUM)]

另外,0.14.0到1.2之间做了较多的更新,不排除期间有些op有改动,但不至于使准确率下降。

gtlvzcf8

gtlvzcf86#

看起来是环境3下收敛更快?不知道你们是否有做过类似的实验对比?
或者还是说我哪里打开方式不太对呢~

krcsximq

krcsximq7#

好的,多次迭代后没有准确率下降问题了,只是好像收敛的快慢,我按你说的再试试

9jyewag0

9jyewag08#

这么设置后环境1输出:
Best pass is 35, testing Avgcost is 0.2994292219205258
The classification accuracy is 91.52%
Inference result of image/infer_3.png is: 3

环境3输出:
Best pass is 56, testing Avgcost is 0.30693747873779886
The classification accuracy is 91.50%
Inference result of image/infer_3.png is: 3

相关问题