python - pickle 加载的对象与预期的不同
问题描述
我正在尝试使用 nevergrad 优化函数并将生成的建议保存在泡菜中。但是当我断言 saved_obj == loaded_obj 时会引发错误。
要重现我上传 per_recommendation.pkl 的问题: https ://drive.google.com/file/d/1bqxO2JjrTP2qh23HT-qdr9Mf1Kfe4mtC/view?usp=sharing
import pickle
import nevergrad
# load obj (in the real code this is the result of some optimization)
with open('/home/franchesoni/Downloads/per_recommendation.pkl', 'rb') as f:
r2 = pickle.load(f)
# r2 = optimizer.minimize(fn)
# save the object
with open('/home/franchesoni/Downloads/per_recommendation2.pkl', 'wb') as f:
pickle.dump(r2, f)
# load the object
with open('/home/franchesoni/Downloads/per_recommendation2.pkl', 'rb') as f:
recommendation = pickle.load(f)
# they are different!
assert r2 == recommendation
这是正常的还是预期的?
题外话:在python 文档中我读到pickle 是不安全的,打开(例如)我上传的文件是否危险?显示 /home/franchesoni 之类的路径是否危险?
解决方案
推荐阅读
- graphdb - 在graphdb上询问原始查询es
- java - 如何填写和导出简单的 JasperReports 报告为 PDF 文件
- angular - 如何通过 get Request 获取 JSON 数组的值?
- r - 我收到“1:x 中的错误:NA/NaN 参数”
- c++ - Flappy Bird 旋转算法
- c++ - 为什么在 Makefile 中更改源位置时无法构建代码?
- swift - '(UIDatePicker)->()'类型的值在swift 5中没有成员'日期'
- tensorflow - BinaryCrossentropy(from_logits=True) 作为损失而不是最后一层的 softmax 激活有什么区别?
- typescript - 使用 ngx-pagination 在第二页上搜索不起作用
- python - 递归特征选择可能不会产生更高的性能?