首页 Paddle框架 帖子详情
paddle如何保证测试时权重不变?
收藏
快速回复
Paddle框架 问答深度学习 1627 3
paddle如何保证测试时权重不变?
收藏
快速回复
Paddle框架 问答深度学习 1627 3

新手,目前学习了paddle的几个初级教程,有个疑问。

正常深度学习过程中,用训练集训练数据,不断修正权重w,使得损失函数最小。再用测试集测试模型的训练成果,重点是测试的过程中要保证之前训练得到的权重w不能改变。

但是paddle教程中训练与测试都用同一个代码,如下:

exe.run(program=fluid.default_main_program(),#运行主程序
             feed=feeder.feed(data), #给模型喂入数据
             fetch_list=[avg_cost, acc])。

这让我不禁疑惑,测试过程是否也在不断的修正之前训练过程中得到的权重w。望各位解惑。

1
收藏
回复
全部评论(3)
时间顺序
学习委员
#2 回复于2019-12

您提的问题很关键,如果训练和测试都使用同一个代码,确实测试也会更新w。

目前我们的教程中,测试程序一般是将main_program clone得到test_program用来测试的,clone操作一般在main program进行minimize之前调用,此时,main program还没有反向更新部分,这时候clone的测试程序不会更新权重w;或者如果您在minimize之后调用,clone操作会将main program的反向部分裁剪掉,保证测试的程序没有反向更新的逻辑,不会对权重进行更新

如果您发现教程中测试程序和训练完全使用一个program,而没有经过clone,欢迎给我们反馈,谢谢

1
回复
m
math44ss
#3 回复于2019-12
您提的问题很关键,如果训练和测试都使用同一个代码,确实测试也会更新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]”里。截图如下:

1
回复
流萤Simple
#4 回复于2020-01

请教一下测试代码是如何写呢,想参考您链接里发的那篇,但是已经设为私密,非常感谢

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户