def test_broken_pickle_with_shared(self): saves = [] def pers_save(obj): if isinstance(obj, np.ndarray): saves.append(obj) return len(saves) - 1 else: return None def pers_load(id): return saves[id] b = np.random.rand(5, 4) x = theano.tensor.matrix() y = theano.shared(b) f = theano.function([x], theano.tensor.dot(x, y)) from theano.compat import BytesIO fp = BytesIO() p = pickle.Pickler(fp, 2) p.persistent_id = pers_save try: p.dump(f) except NotImplementedError as e: if exc_message(e).startswith('DebugMode is not picklable'): return else: raise fp2 = BytesIO(fp.getvalue()) fp.close() p = pickle.Unpickler(fp2) p.persistent_load = pers_load p.load() fp2.close()
y = theano.shared(b) f = theano.function([x], theano.tensor.dot(x, y)) from theano.compat import BytesIO fp = BytesIO() p = cPickle.Pickler(fp, 2) p.persistent_id = pers_save try: p.dump(f) except NotImplementedError, e: if exc_message(e).startswith('DebugMode is not picklable'): return else: raise fp2 = BytesIO(fp.getvalue()) fp.close() p = cPickle.Unpickler(fp2) p.persistent_load = pers_load f2 = p.load() fp2.close() def test_pickle_class_with_functions(self): blah = SomethingToPickle() assert blah.f2.container[blah.s].storage is blah.f1.container[blah.s].storage try: blah2 = copy.deepcopy(blah) except NotImplementedError, e: if e[0].startswith('DebugMode is not picklable'):