Esempio n. 1
0
    assert m.z.b == 6
    assert all(m.z.c == [7, 8])

class MyModule(Module):
    def __init__(self):
        Module.__init__(self)
        self.a = T.dscalar()
        self.b = T.dscalar()
    def _instance_initialize(self, obj):
        obj.a = 4.5
        obj.b = 3.5

    def _instance_something(self, obj, a):
        return obj.a + a

def test_pickle_module():
    M = MyModule()
    m = M.make()
    mm = copy.deepcopy(m)
    assert m.a == mm.a
    assert m.b == mm.b

if __name__ == '__main__':
    from theano.tests import main
#    main(__file__[:-3])
    main("test_module")
#    t=T_test_module()
#    t.test_shared_members()
#    tests = unittest.TestLoader().loadTestsFromModule("T_test_module")
#    tests.debug()
Esempio n. 2
0
        # normal with explicit size and size implicit in parameters
        # cf. NOTE 1
        post_r, out = normal(rng_R, avg=avg, std=std, size=size_val)
        self._compile_and_check([rng_R, avg, std], [out], [rng_R_val, avg_val,
                                std_val], RandomFunction)

        # multinomial with tensor-3 probabilities
        """
        #multinomial infer_shape don't work.
        pvals = dtensor3()
        n = iscalar()
        post_r, out = multinomial(rng_R, n=n, pvals=pvals, size=(1, -1))
        pvals_val = [[[.1, .9], [.2, .8], [.3, .7]]]
        n_val = 9

        self._compile_and_check([rng_R, n, pvals], [out],
                                [rng_R_val, n_val,
                                pvals_val], RandomFunction)

        post_r, out = multinomial(rng_R, n=n, pvals=pvals, size=(10, 1, -1))

        self._compile_and_check([rng_R, n, pvals], [out],
                                [rng_R_val, n_val,
                                pvals_val], RandomFunction)
        """


if __name__ == '__main__':
    from theano.tests import main
    main("test_raw_random")
Esempio n. 3
0
        # Specifying the size explicitly
        numpy_rng = numpy.random.RandomState(int(seed_gen.randint(2**30)))
        val2 = made.g(n_val, pvals_val)
        numpy_val2 = numpy.asarray([numpy_rng.multinomial(n=nv, pvals=pv)
            for nv, pv in zip(n_val, pvals_val)])
        assert numpy.all(val2 == numpy_val2)
        self.assertRaises(ValueError, made.g, n_val[:-1], pvals_val[:-1])

    def test_dtype(self):
        m = Module()
        m.random = RandomStreams(utt.fetch_seed())
        low = tensor.lscalar()
        high = tensor.lscalar()
        out = m.random.random_integers(low=low, high=high, size=(20,), dtype='int8')
        assert out.dtype == 'int8'
        m.f = Method([low, high], out)
        made = m.make()
        made.random.initialize()

        val0 = made.f(0, 9)
        assert val0.dtype == 'int8'

        val1 = made.f(255, 257)
        assert val1.dtype == 'int8'
        assert numpy.all(abs(val1) <= 1)


if __name__ == '__main__':
    from theano.tests import main
    main("test_randomstreams")
        meant to detect a previous bug where state_updates was initialized as a
        class-attribute, instead of the __init__ function.
        """
        rng1 = RandomStreams(1234)
        rng2 = RandomStreams(2392)
        assert rng1.state_updates is not rng2.state_updates
        assert rng1.gen_seedgen is not rng2.gen_seedgen

    def test_random_state_transfer(self):
        """
        Test that random state can be transferred from one theano graph to another.
        """
        class Graph:
            def __init__(self, seed=123):
                self.rng = RandomStreams(seed)
                self.y = self.rng.uniform(size=(1,))
        g1 = Graph(seed=123)
        f1 = function([], g1.y)
        g2 = Graph(seed=987)
        f2 = function([], g2.y)

        for (su1, su2) in zip(g1.rng.state_updates, g2.rng.state_updates):
            su2[0].set_value(su1[0].get_value())

        numpy.testing.assert_array_almost_equal(f1(), f2(), decimal=6)


if __name__ == '__main__':
    from theano.tests import main
    main("test_shared_randomstreams")
        class-attribute, instead of the __init__ function.
        """
        rng1 = RandomStreams(1234)
        rng2 = RandomStreams(2392)
        assert rng1.state_updates is not rng2.state_updates
        assert rng1.gen_seedgen is not rng2.gen_seedgen

    def test_random_state_transfer(self):
        """
        Test that random state can be transferred from one theano graph to another.
        """
        class Graph:
            def __init__(self, seed=123):
                self.rng = RandomStreams(seed)
                self.y = self.rng.uniform(size=(1, ))

        g1 = Graph(seed=123)
        f1 = function([], g1.y)
        g2 = Graph(seed=987)
        f2 = function([], g2.y)

        for (su1, su2) in zip(g1.rng.state_updates, g2.rng.state_updates):
            su2[0].set_value(su1[0].get_value())

        numpy.testing.assert_array_almost_equal(f1(), f2(), decimal=6)


if __name__ == '__main__':
    from theano.tests import main
    main("test_shared_randomstreams")