Paddle 请问用paddle动态图训练使用save_dygraph保存,为什么又将动态图模型转换为静态图模型推理,目的和作用是什么呢?

r3i60tvu  于 2022-04-21  发布在  Java
关注(0)|答案(4)|浏览(195)

为使您的问题得到快速解决,在建立Issue前,请您先通过如下方式搜索是否有相似问题:【搜索issue关键字】【使用labels筛选】【官方文档】

如果您没有查询到相似问题,为快速解决您的提问,建立issue时请提供如下细节信息:

  • 标题:简洁、精准描述您的问题,例如“最新预测库的API文档在哪儿 ”
  • 版本、环境信息:

   1)PaddlePaddle版本:请提供您的PaddlePaddle版本号(如1.1)或CommitID
   2)CPU:预测若用CPU,请提供CPU型号,MKL/OpenBlas/MKLDNN/等数学库使用情况
   3)GPU:预测若用GPU,请提供GPU型号、CUDA和CUDNN版本号
   4)系统环境:请您描述系统类型、版本(如Mac OS 10.14),Python版本
注:您可以通过执行summary_env.py获取以上信息。
-预测信息
   1)C++预测:请您提供预测库安装包的版本信息,及其中的version.txt文件
   2)CMake包含路径的完整命令
   3)API信息(如调用请提供)
   4)预测库来源:官网下载/特殊环境(如BCLOUD编译)

  • 复现信息:如为报错,请给出复现环境、复现步骤
  • 问题描述:请详细描述您的问题,同步贴出报错信息、日志/代码关键片段

Thank you for contributing to PaddlePaddle.
Before submitting the issue, you could search issue in the github in case that th
If there is no solution,please make sure that this is an inference issue including the following details :

System information

-PaddlePaddle version (eg.1.1)or CommitID
-CPU: including CPUMKL/OpenBlas/MKLDNN version
-GPU: including CUDA/CUDNN version
-OS Platform (eg.Mac OS 10.14)
-Python version
-Cmake orders
-C++version.txt
-API information
Note: You can get most of the information by running summary_env.py.

To Reproduce

Steps to reproduce the behavior

Describe your current behavior
Code to reproduce the issue
Other info / logs

yptwkmov

yptwkmov1#

您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网API文档常见问题历史IssueAI社区来寻求解答。祝您生活愉快~

Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the APIFAQGithub Issue and AI community to get the answer.Have a nice day!

vxf3dgd4

vxf3dgd42#

@dickobe 动态图的save_dygraph只是其中一种方式,只保存 模型参数 值,这种方式如果加载需要重新有模型结构的代码,例如 class net这样的结构,然后才能load_dygraph加载模型参数。但paddle.jit.save后可以将动态图模型结构也保存下来,使用paddle.jit.load加载模型结构,很多时候部署并不需要知道模型结构代码;另外paddle.jit.save的结果也可以通过静态图运行,静态图下运行性能可能会更好。具体各个API的关系可以参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/08_model_save_load_cn.html

bjp0bcyl

bjp0bcyl3#

@dickobe 动态图的save_dygraph只是其中一种方式,只保存 模型参数 值,这种方式如果加载需要重新有模型结构的代码,例如 class net这样的结构,然后才能load_dygraph加载模型参数。但paddle.jit.save后可以将动态图模型结构也保存下来,使用paddle.jit.load加载模型结构,很多时候部署并不需要知道模型结构代码;另外paddle.jit.save的结果也可以通过静态图运行,静态图下运行性能可能会更好。具体各个API的关系可以参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/08_model_save_load_cn.html

@zhouwei25 还想问几个问题:
1、这些方法如何区分是静态图还是动态图呢,有没有什么好的方法区分,感觉有点乱
2、之前模型保存在chechpoint下,会有多个文件,比如下图;但现在只有一个.pbmodel, 这和之前是否有区别呢?

3、paddle.jit.save 这个函数是否可以再paddle 1.8.3版本用呢

xxb16uws

xxb16uws4#

@dickobe 1. paddle.save/load系列是动态图、静态图都可用;paddle.jit系列是动态图使用;
2. 多个文件是通过旧的 save_params/save_persistable保存的吗?如果通过paddle.save保存,是.pdparams单个文件,区别就是保存形式不同
3. paddle.jit是2.2.0版本可用;
需要区分是什么场景,如果只是训练,用paddle.save/load这两个API就可以,预测才考虑save_inference_model和jit,不建议使用之前的API,建议2.2直接使用paddle.save/load就可以

相关问题