paddle如何保证测试时权重不变?
收藏
新手,目前学习了paddle的几个初级教程,有个疑问。
正常深度学习过程中,用训练集训练数据,不断修正权重w,使得损失函数最小。再用测试集测试模型的训练成果,重点是测试的过程中要保证之前训练得到的权重w不能改变。
但是paddle教程中训练与测试都用同一个代码,如下:
exe.run(program=fluid.default_main_program(),#运行主程序
feed=feeder.feed(data), #给模型喂入数据
fetch_list=[avg_cost, acc])。
这让我不禁疑惑,测试过程是否也在不断的修正之前训练过程中得到的权重w。望各位解惑。
1
收藏
请登录后评论
您提的问题很关键,如果训练和测试都使用同一个代码,确实测试也会更新w。
目前我们的教程中,测试程序一般是将main_program clone得到test_program用来测试的,clone操作一般在main program进行minimize之前调用,此时,main program还没有反向更新部分,这时候clone的测试程序不会更新权重w;或者如果您在minimize之后调用,clone操作会将main program的反向部分裁剪掉,保证测试的程序没有反向更新的逻辑,不会对权重进行更新
如果您发现教程中测试程序和训练完全使用一个program,而没有经过clone,欢迎给我们反馈,谢谢
非常感谢您的解答,解决了我的疑惑。但我确实看到一篇教程使用同一个program,而且没有经过clone。教程如下:
零基础入门深度学习>新手入门第一课——什么是深度学习?(教师发布的版本)
网址为:https://aistudio.baidu.com/aistudio/projectdetail/150409?pV=10961
在教程中的“In[16]”里。截图如下:
请教一下测试代码是如何写呢,想参考您链接里发的那篇,但是已经设为私密,非常感谢