suriyadeepan / practical_seq2seq

A simple, minimal wrapper for tensorflow's seq2seq module, for experimenting with datasets rapidly
http://suriyadeepan.github.io/2016-12-31-practical-seq2seq/
GNU General Public License v3.0
569 stars 270 forks source link

pickle issue in python 2.* #11

Closed akangaziz closed 7 years ago

akangaziz commented 7 years ago

unfortunately, if you use python 2.* you will face problem with pickle load:

akangaziz:practical_seq2seq mmdc$ python 03-Twitter-chatbot.py Traceback (most recent call last): File "03-Twitter-chatbot.py", line 11, in <module> metadata, idx_q, idx_a = data.load_data(PATH='datasets/twitter/') File "/Users/mmdc/tf/practical_seq2seq/datasets/twitter/data.py", line 206, in load_data metadata = pickle.load(f) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load return Unpickler(file).load() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load dispatch[key](self) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 886, in load_proto raise ValueError, "unsupported pickle protocol: %d" % proto ValueError: unsupported pickle protocol: 3

as shared here and here , it's because of backward-incompatible.

here is quick workaround for those who face this problem in python (esp python 2.7): file: practical_seq2seq/datasets/twitter/data.py line: 206 change this code: metadata = pickle.load(f)

to this code:

metadata = pickle.dump(pickle.load(sys.stdin), sys.stdout, 2)

and everything will work like a magic :) good luck, buddy.