def test_n_samples_compatibility(): """ This test checks if the new change to MultinomialFromUniform is still compatible with old interface. Here I will load a graph created (using the old interface) as follows: RandomStreams = theano.sandbox.rng_mrg.MRG_RandomStreams th_rng = RandomStreams(12345) X = T.matrix('X') pvals = T.exp(X) pvals = pvals / pvals.sum(axis=1, keepdims=True) samples = th_rng.multinomial(pvals=pvals) pickle.dump([X, samples], open("multinomial_test_graph.pkl", "w")) """ folder = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(folder, "multinomial_test_graph.pkl"), "rb") as pkl_file: if PY3: u = CompatUnpickler(pkl_file, encoding="latin1") else: u = CompatUnpickler(pkl_file) try: X, samples = u.load() except ImportError: # Windows sometimes fail with nonsensical errors like: # ImportError: No module named type # ImportError: No module named copy_reg # when "type" and "copy_reg" are builtin modules. if sys.platform == 'win32': exc_type, exc_value, exc_trace = sys.exc_info() reraise(SkipTest, exc_value, exc_trace) raise f = theano.function([X], samples) res = f(np.random.randn(20, 10)) assert np.all(res.sum(axis=1) == 1)
def test_unpickle_gpuarray_as_numpy_ndarray_flag2(): oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = True try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'GpuArray.pkl' with open(os.path.join(testfile_dir, fname), 'rb') as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) try: mat = u.load() except ImportError: # Windows sometimes fail with nonsensical errors like: # ImportError: No module named type # ImportError: No module named copy_reg # when "type" and "copy_reg" are builtin modules. if sys.platform == 'win32': exc_type, exc_value, exc_trace = sys.exc_info() reraise(SkipTest, exc_value, exc_trace) raise assert isinstance(mat, numpy.ndarray) assert mat[0] == -42.0 finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_n_samples_compatibility(): """ This test checks if the new change to MultinomialFromUniform is still compatible with old interface. Here I will load a graph created (using the old interface) as follows: RandomStreams = theano.sandbox.rng_mrg.MRG_RandomStreams th_rng = RandomStreams(12345) X = T.matrix('X') pvals = T.exp(X) pvals = pvals / pvals.sum(axis=1, keepdims=True) samples = th_rng.multinomial(pvals=pvals) pickle.dump([X, samples], open("multinomial_test_graph.pkl", "w")) """ folder = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(folder, "multinomial_test_graph.pkl"), "rb") as pkl_file: if PY3: u = CompatUnpickler(pkl_file, encoding="latin1") else: u = CompatUnpickler(pkl_file) try: X, samples = u.load() except ImportError: # Windows sometimes fail with nonsensical errors like: # ImportError: No module named type # ImportError: No module named copy_reg # when "type" and "copy_reg" are builtin modules. if sys.platform == 'win32': exc_type, exc_value, exc_trace = sys.exc_info() reraise(SkipTest, exc_value, exc_trace) raise f = theano.function([X], samples) res = f(numpy.random.randn(20, 10)) assert numpy.all(res.sum(axis=1) == 1)
def test_unpickle_gpuarray_as_numpy_ndarray_flag2(): oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = True try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = "GpuArray.pkl" with open(os.path.join(testfile_dir, fname), "rb") as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) try: mat = u.load() except ImportError: # Windows sometimes fail with nonsensical errors like: # ImportError: No module named type # ImportError: No module named copy_reg # when "type" and "copy_reg" are builtin modules. if sys.platform == "win32": exc_type, exc_value, exc_trace = sys.exc_info() reraise(SkipTest, exc_value, exc_trace) raise assert isinstance(mat, numpy.ndarray) assert mat[0] == -42.0 finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_unpickle_cudandarray_as_numpy_ndarray_flag0(): oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = False try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'CudaNdarray.pkl' with open(os.path.join(testfile_dir, fname), 'rb') as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) if cuda_available: try: mat = u.load() except ImportError: # Windows sometimes fail with nonsensical errors like: # ImportError: No module named type # ImportError: No module named copy_reg # when "type" and "copy_reg" are builtin modules. if sys.platform == 'win32': exc_type, exc_value, exc_trace = sys.exc_info() reraise(SkipTest, exc_value, exc_trace) raise assert isinstance(mat, CudaNdarray) assert numpy.asarray(mat)[0] == -42.0 else: assert_raises(ImportError, u.load) finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_unpickle_gpuarray_as_numpy_ndarray_flag1(): oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = False try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = "GpuArray.pkl" with open(os.path.join(testfile_dir, fname), "rb") as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) with pytest.raises((ImportError, ContextNotDefined)): u.load() finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_unpickle_legacy_op(): testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'test_gpuarray_multinomial_wo_replacement.pkl' if not PY3: with open(os.path.join(testfile_dir, fname), 'r') as fp: u = CompatUnpickler(fp) m = u.load() assert isinstance(m, GPUAChoiceFromUniform)
def test_unpickle_legacy_op(self): testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = "test_sandbox_multinomial_wo_replacement.pkl" if not PY3: with open(os.path.join(testfile_dir, fname), "r") as fp: u = CompatUnpickler(fp) m = u.load() print(m) assert isinstance(m, multinomial.ChoiceFromUniform)
def test_node_outputs_not_used(self): # In the past, we where removing some not used variable from # fgraph.variables event if the apply had other output used in # the graph. This caused a crash. # This test run the pickle that reproduce this case. with open(os.path.join(os.path.dirname(__file__), 'test_fg_old_crash.pkl'), 'rb') as f: from theano.misc.pkl_utils import CompatUnpickler if PY3: u = CompatUnpickler(f, encoding="latin1") else: u = CompatUnpickler(f) d = u.load() f = theano.function(**d)
def test_node_outputs_not_used(self): # In the past, we where removing some not used variable from # fgraph.variables event if the apply had other output used in # the graph. This caused a crash. # This test run the pickle that reproduce this case. with open( os.path.join(os.path.dirname(__file__), 'test_fg_old_crash.pkl'), 'rb') as f: from theano.misc.pkl_utils import CompatUnpickler if PY3: u = CompatUnpickler(f, encoding="latin1") else: u = CompatUnpickler(f) d = u.load() f = theano.function(**d)
def test_node_outputs_not_used(self): """In the past, we where removing some not used variable from fgraph.variables event if the apply had other output used in the graph. This caused a crash. This test run the pickle that reproduce this case. """ if sys.version_info[:2] < (2, 7): raise SkipTest("This test need python 2.7 or more recent.") with open(os.path.join(os.path.dirname(__file__), 'test_fg_old_crash.pkl'), 'rb') as f: from theano.misc.pkl_utils import CompatUnpickler if PY3: u = CompatUnpickler(f, encoding="latin1") else: u = CompatUnpickler(f) d = u.load() f = theano.function(**d)
def test_unpickle_gpuarray_as_numpy_ndarray_flag0(): """ Test when pygpu isn't there for unpickle are in test_pickle.py""" oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = False try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'GpuArray.pkl' with open(os.path.join(testfile_dir, fname), 'rb') as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) mat = u.load() assert isinstance(mat, pygpu.gpuarray.GpuArray) assert np.asarray(mat)[0] == -42.0 finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_unpickle_gpuarray_as_numpy_ndarray_flag0(): # Test when pygpu isn't there for unpickle are in test_pickle.py oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = False try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'GpuArray.pkl' with open(os.path.join(testfile_dir, fname), 'rb') as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) mat = u.load() assert isinstance(mat, pygpu.gpuarray.GpuArray) assert np.asarray(mat)[0] == -42.0 finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_node_outputs_not_used(self): """In the past, we where removing some not used variable from fgraph.variables event if the apply had other output used in the graph. This caused a crash. This test run the pickle that reproduce this case. """ if sys.version_info[:2] < (2, 7): raise SkipTest("This test need python 2.7 or more recent.") with open( os.path.join(os.path.dirname(__file__), 'test_fg_old_crash.pkl'), 'rb') as f: from theano.misc.pkl_utils import CompatUnpickler if PY3: u = CompatUnpickler(f, encoding="latin1") else: u = CompatUnpickler(f) d = u.load() f = theano.function(**d)
def test_unpickle_cudandarray_as_numpy_ndarray_flag1(): oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = True try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'CudaNdarray.pkl' with open(os.path.join(testfile_dir, fname), 'rb') as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) mat = u.load() assert isinstance(mat, numpy.ndarray) assert mat[0] == -42.0 finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_unpickle_gpuarray_as_numpy_ndarray_flag2(): oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = True try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'GpuArray.pkl' with open(os.path.join(testfile_dir, fname), 'rb') as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) mat = u.load() assert isinstance(mat, numpy.ndarray) assert mat[0] == -42.0 finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_unpickle_cudandarray_as_numpy_ndarray_flag0(): oldflag = config.experimental.unpickle_gpu_on_cpu config.experimental.unpickle_gpu_on_cpu = False try: testfile_dir = os.path.dirname(os.path.realpath(__file__)) fname = 'CudaNdarray.pkl' with open(os.path.join(testfile_dir, fname), 'rb') as fp: if PY3: u = CompatUnpickler(fp, encoding="latin1") else: u = CompatUnpickler(fp) if cuda_available: mat = u.load() assert isinstance(mat, CudaNdarray) assert numpy.asarray(mat)[0] == -42.0 else: assert_raises(ImportError, u.load) finally: config.experimental.unpickle_gpu_on_cpu = oldflag
def test_n_samples_compatibility(): """ This test checks if the new change to MultinomialFromUniform is still compatible with old interface. Here I will load a graph created (using the old interface) as follows: RandomStreams = theano.sandbox.rng_mrg.MRG_RandomStreams th_rng = RandomStreams(12345) X = T.matrix('X') pvals = T.exp(X) pvals = pvals / pvals.sum(axis=1, keepdims=True) samples = th_rng.multinomial(pvals=pvals) pickle.dump([X, samples], open("multinomial_test_graph.pkl", "w")) """ folder = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(folder, "multinomial_test_graph.pkl"), "rb") as pkl_file: if PY3: u = CompatUnpickler(pkl_file, encoding="latin1") else: u = CompatUnpickler(pkl_file) X, samples = u.load() f = theano.function([X], samples) res = f(numpy.random.randn(20,10)) assert numpy.all(res.sum(axis=1) == 1)
def test_n_samples_compatibility(): """ This test checks if the new change to MultinomialFromUniform is still compatible with old interface. Here I will load a graph created (using the old interface) as follows: RandomStreams = theano.sandbox.rng_mrg.MRG_RandomStreams th_rng = RandomStreams(12345) X = T.matrix('X') pvals = T.exp(X) pvals = pvals / pvals.sum(axis=1, keepdims=True) samples = th_rng.multinomial(pvals=pvals) pickle.dump([X, samples], open("multinomial_test_graph.pkl", "w")) """ folder = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(folder, "multinomial_test_graph.pkl"), "rb") as pkl_file: if PY3: u = CompatUnpickler(pkl_file, encoding="latin1") else: u = CompatUnpickler(pkl_file) X, samples = u.load() f = theano.function([X], samples) res = f(numpy.random.randn(20, 10)) assert numpy.all(res.sum(axis=1) == 1)