什么情况下save与load的结果不一致呢,应该如何避免这种情况发生呢?
收藏
什么情况下save与load的结果不一致呢,应该如何避免这种情况发生呢?
旧鸱c_
已解决
2#
回复于2021-08
以下情况会造成save与load的结果不一致: 被保存的对象包含动态图Tensor同时包含tuple(string, numpy.ndarray); 被保存的对象包含静态图Tensor,同时包含numpy.ndarray或者tuple(string, numpy.ndarray); 被保存的对象只包含numpy.ndarray,但是包含tuple(string, numpy.ndarray)。 针对这些情况我们有以下建议: 被保存的对象(包括Layer对象中的ParamBase),避免包含形如tuple(string, numpy.ndarray)的对象; 如果被保存的对象包含numpy.ndarray,尽量在load时设置return_numpy = True。 对于Layer对象,只保存参数的值和名字,如果需要其他信息(例如stop_gradient),请将手将这些信息打包成dict等,一并保存。
0
收藏
请登录后评论
以下情况会造成save与load的结果不一致:
被保存的对象包含动态图Tensor同时包含tuple(string, numpy.ndarray);
被保存的对象包含静态图Tensor,同时包含numpy.ndarray或者tuple(string, numpy.ndarray);
被保存的对象只包含numpy.ndarray,但是包含tuple(string, numpy.ndarray)。
针对这些情况我们有以下建议:
被保存的对象(包括Layer对象中的ParamBase),避免包含形如tuple(string, numpy.ndarray)的对象;
如果被保存的对象包含numpy.ndarray,尽量在load时设置return_numpy = True。
对于Layer对象,只保存参数的值和名字,如果需要其他信息(例如stop_gradient),请将手将这些信息打包成dict等,一并保存。