Hier ist ein Snippet, das erfolgreich mit dill
serialisieren wird, aber mit pickle
fehlschlagen. Es ist überraschend, dass Tensor
Objekte nicht nativ pickbar sind. Ist das eine grundsätzliche Einschränkung von threadbewussten Tensoren oder wird sie einfach nicht implementiert?Warum versagt das Beizen eines Tensorflow-Tensors?
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")
Ausgang:
$ 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
Mögliches Duplikat http://stackoverflow.com/questions/39286665/how-to-avoid-pickling-errors-when-sharing-objects-between-threads – DyZ