首页 Paddle框架 帖子详情
paddle.save 是如何保存state_dict,Layer对象,Tensor及包含Tensor嵌套等 已解决
收藏
快速回复
Paddle框架 问答模型训练深度学习 605 1
paddle.save 是如何保存state_dict,Layer对象,Tensor及包含Tensor嵌套等 已解决
收藏
快速回复
Paddle框架 问答模型训练深度学习 605 1

paddle.save 是如何保存state_dict,Layer对象,Tensor以及包含Tensor的嵌套list、tuple、dict的呢?

旧鸱c_
已解决
2# 回复于2021-08
对于state_dict保存方式与paddle2.0完全相同,我们将Tensor转化为numpy.ndarray保存。 对于其他形式的包含Tensor的对象(Layer对象,单个Tensor以及包含Tensor的嵌套list、tuple、dict),在动态图中,将Tensor转化为tuple(Tensor.name, Tensor.numpy());在静态图中,将Tensor直接转化为numpy.ndarray。之所以这样做,是因为当在静态图中使用动态保存的模型时,有时需要Tensor的名字因此将名字保存下来,同时,在load时区分这个numpy.ndarray是由Tenosr转化而来还是本来就是numpy.ndarray;保存静态图的Tensor时,通常通过Variable.get_value得到Tensor再使用paddle.save保存Tensor,此时,Variable是有名字的,这个Tensor是没有名字的,因此将静态图Tensor直接转化为numpy.ndarray保存。 此处动态图Tensor和静态图Tensor是不相同的,动态图Tensor有name、stop_gradient等属性;而静态图的Tensor是比动态图Tensor轻量级的,只包含place等基本信息,不包含名字等。
展开
0
收藏
回复
全部评论(1)
时间顺序
旧鸱c_
#2 回复于2021-08

对于state_dict保存方式与paddle2.0完全相同,我们将Tensor转化为numpy.ndarray保存。
对于其他形式的包含Tensor的对象(Layer对象,单个Tensor以及包含Tensor的嵌套list、tuple、dict),在动态图中,将Tensor转化为tuple(Tensor.name, Tensor.numpy());在静态图中,将Tensor直接转化为numpy.ndarray。之所以这样做,是因为当在静态图中使用动态保存的模型时,有时需要Tensor的名字因此将名字保存下来,同时,在load时区分这个numpy.ndarray是由Tenosr转化而来还是本来就是numpy.ndarray;保存静态图的Tensor时,通常通过Variable.get_value得到Tensor再使用paddle.save保存Tensor,此时,Variable是有名字的,这个Tensor是没有名字的,因此将静态图Tensor直接转化为numpy.ndarray保存。
此处动态图Tensor和静态图Tensor是不相同的,动态图Tensor有name、stop_gradient等属性;而静态图的Tensor是比动态图Tensor轻量级的,只包含place等基本信息,不包含名字等。

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