1.8开发的静态图代码能在2.0版本中运行吗 ?
收藏
1.8开发的静态图代码能在2.0版本中运行吗 ?
旧鸱c_
已解决
2#
回复于2021-08
所有1.8的静态图模型在2.0版本中都会报错。 问题分析: 2.0版本默认开启了动态图模式。即当调用import paddle后,此时Paddle已经运行在动态图模式下。基于1.8开发的静态图代码,在2.0版本下直接执行会出错。为此,在静态图的一些入口API 中加入了报错检查,例如直接调用fluid.data会遇到如下错误: [图片] 解决方案: 旧版本(1.8及之前版本)静态图下的代码,需要在import paddle后的头部位置加入paddle.enable_static()来开启静态图模式,这样才能正常运行。 原来通过dygraph guard写的动态图代码仍然可以正常执行。但在2.0下可以不需要像以前写dygraph guard,直接按照动态图模式编写代码。 同时,请注意对于GPU版本的paddle,在import paddle时默认开启动态图会选择CUDAPlace作为默认place。如果要修改place,可以通过paddle.set_device()来完成。
0
收藏
请登录后评论
所有1.8的静态图模型在2.0版本中都会报错。
问题分析:
2.0版本默认开启了动态图模式。即当调用import paddle后,此时Paddle已经运行在动态图模式下。基于1.8开发的静态图代码,在2.0版本下直接执行会出错。为此,在静态图的一些入口API 中加入了报错检查,例如直接调用fluid.data会遇到如下错误:
解决方案:
旧版本(1.8及之前版本)静态图下的代码,需要在import paddle后的头部位置加入paddle.enable_static()来开启静态图模式,这样才能正常运行。
原来通过dygraph guard写的动态图代码仍然可以正常执行。但在2.0下可以不需要像以前写dygraph guard,直接按照动态图模式编写代码。
同时,请注意对于GPU版本的paddle,在import paddle时默认开启动态图会选择CUDAPlace作为默认place。如果要修改place,可以通过paddle.set_device()来完成。