def test_vector_arguments(self): m = Module() m.random = RandomStreams(utt.fetch_seed()) low = tensor.vector() out = m.random.uniform(low=low, high=1) assert out.ndim == 1 m.f = Method([low], out) high = tensor.vector() outb = m.random.uniform(low=low, high=high) assert outb.ndim == 1 m.fb = Method([low, high], outb) size = tensor.lvector() outc = m.random.uniform(low=low, high=high, size=size, ndim=1) m.fc = Method([low, high, size], outc) made = m.make() made.random.initialize() seed_gen = numpy.random.RandomState(utt.fetch_seed()) numpy_rng = numpy.random.RandomState(int(seed_gen.randint(2**30))) low_val0 = numpy.asarray([-5, .5, 0, 1], dtype=config.floatX) low_val1 = numpy.asarray([.9], dtype=config.floatX) val0 = made.f(low_val0) val1 = made.f(low_val1) numpy_val0 = numpy_rng.uniform(low=low_val0, high=1) numpy_val1 = numpy_rng.uniform(low=low_val1, high=1) assert numpy.allclose(val0, numpy_val0) assert numpy.allclose(val1, numpy_val1) numpy_rng = numpy.random.RandomState(int(seed_gen.randint(2**30))) val0b = made.fb([-4., -2], [-1, 0]) val1b = made.fb([-4.], [-1]) numpy_val0b = numpy_rng.uniform(low=[-4., -2], high=[-1, 0]) numpy_val1b = numpy_rng.uniform(low=[-4.], high=[-1]) assert numpy.allclose(val0b, numpy_val0b) assert numpy.allclose(val1b, numpy_val1b) self.assertRaises(ValueError, made.fb, [-4., -2], [-1, 0, 1]) #TODO: do we want that? #self.assertRaises(ValueError, made.fb, [-4., -2], [-1]) numpy_rng = numpy.random.RandomState(int(seed_gen.randint(2**30))) val0c = made.fc([-4., -2], [-1, 0], [2]) val1c = made.fc([-4.], [-1], [1]) numpy_val0c = numpy_rng.uniform(low=[-4., -2], high=[-1, 0]) numpy_val1c = numpy_rng.uniform(low=[-4.], high=[-1]) assert numpy.allclose(val0c, numpy_val0c) assert numpy.allclose(val1c, numpy_val1c) self.assertRaises(ValueError, made.fc, [-4., -2], [-1, 0], [1]) self.assertRaises(ValueError, made.fc, [-4., -2], [-1, 0], [1, 2]) self.assertRaises(ValueError, made.fc, [-4., -2], [-1, 0], [2, 1]) self.assertRaises(ValueError, made.fc, [-4., -2], [-1], [1])
def test_vector_arguments(self): m = Module() m.random = RandomStreams(utt.fetch_seed()) low = tensor.vector() out = m.random.uniform(low=low, high=1) assert out.ndim == 1 m.f = Method([low], out) high = tensor.vector() outb = m.random.uniform(low=low, high=high) assert outb.ndim == 1 m.fb = Method([low, high], outb) size = tensor.lvector() outc = m.random.uniform(low=low, high=high, size=size, ndim=1) m.fc = Method([low, high, size], outc) made = m.make() made.random.initialize() seed_gen = numpy.random.RandomState(utt.fetch_seed()) numpy_rng = numpy.random.RandomState(int(seed_gen.randint(2**30))) low_val0 = numpy.asarray([-5, .5, 0, 1], dtype=config.floatX) low_val1 = numpy.asarray([.9], dtype=config.floatX) val0 = made.f(low_val0) val1 = made.f(low_val1) numpy_val0 = numpy_rng.uniform(low=low_val0, high=1) numpy_val1 = numpy_rng.uniform(low=low_val1, high=1) assert numpy.allclose(val0, numpy_val0) assert numpy.allclose(val1, numpy_val1) numpy_rng = numpy.random.RandomState(int(seed_gen.randint(2**30))) val0b = made.fb([-4., -2], [-1, 0]) val1b = made.fb([-4.], [-1]) numpy_val0b = numpy_rng.uniform(low=[-4., -2], high=[-1, 0]) numpy_val1b = numpy_rng.uniform(low=[-4.], high=[-1]) assert numpy.allclose(val0b, numpy_val0b) assert numpy.allclose(val1b, numpy_val1b) self.assertRaises(ValueError, made.fb, [-4., -2], [-1, 0, 1]) #TODO: do we want that? #self.assertRaises(ValueError, made.fb, [-4., -2], [-1]) numpy_rng = numpy.random.RandomState(int(seed_gen.randint(2**30))) val0c = made.fc([-4., -2], [-1, 0], [2]) val1c = made.fc([-4.], [-1], [1]) numpy_val0c = numpy_rng.uniform(low=[-4., -2], high=[-1, 0]) numpy_val1c = numpy_rng.uniform(low=[-4.], high=[-1]) assert numpy.allclose(val0c, numpy_val0c) assert numpy.allclose(val1c, numpy_val1c) self.assertRaises(ValueError, made.fc, [-4., -2], [-1, 0], [1]) self.assertRaises(ValueError, made.fc, [-4., -2], [-1, 0], [1,2]) self.assertRaises(ValueError, made.fc, [-4., -2], [-1, 0], [2,1]) self.assertRaises(ValueError, made.fc, [-4., -2], [-1], [1])