gpt4 book ai didi

python - 为什么对 tensorflow 张量进行 pickle 会失败?

转载 作者:行者123 更新时间:2023-12-01 03:01:39 24 4
gpt4 key购买 nike

下面的代码片段可以使用 dill 成功序列化,但使用 pickle 序列化失败。令人惊讶的是,Tensor 对象本身不可pickle。这是线程感知张量的基本限制,还是只是没有实现?

import dill
import pickle
import tensorflow as tf

dill.dumps(tf.zeros((1,1)))
print("Dill succeeded")
pickle.dumps(tf.zeros((1,1)))
print("Pickle succeeded")

输出:

$ python foo.py
Dill succeeded
Traceback (most recent call last):
File "foo.py", line 7, in <module>
pickle.dumps(tf.zeros((1,1)))
TypeError: can't pickle _thread.lock objects

最佳答案

为什么dill可以序列化这些对象,而pickle却不能?简单的答案是 pickle 无法序列化 python 中的大多数对象,包括 thread.lock 对象。如果您想序列化这些对象之一,请使用高级序列化库,例如 dill。至于为什么 pickle 不能,我认为最初它源于 GIL 的实现和 frame 对象渲染一些对象不可序列化,因此没有驱动用语言序列化所有内容。一直以来,人们都在谈论所有 Python 对象的序列化所引发的安全问题,但我认为这是转移注意力的话题。没有完整的语言序列化限制了并行计算的能力,因此希望 pickle 能够向 dill 学习如何序列化更多对象。

关于python - 为什么对 tensorflow 张量进行 pickle 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43769390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com