def testErrorNotThrownWithSeed(self): random_ops.random_normal((1,), seed=0) random_seed.set_random_seed(0) random_ops.random_normal((1,)) self.evaluate(gen_random_ops.random_standard_normal((1,), dtypes.float32, seed=1)) self.evaluate(gen_random_ops.random_standard_normal((1,), dtypes.float32, seed2=1))
def random_normal(shape, mean=0.0, stddev=1.0, dtype=dtypes.float32, seed=None, name=None): """Outputs random values from a normal distribution. Args: shape: A 1-D integer Tensor or Python array. The shape of the output tensor. mean: A Tensor or Python value of type `dtype`, broadcastable with `stddev`. The mean of the normal distribution. stddev: A Tensor or Python value of type `dtype`, broadcastable with `mean`. The standard deviation of the normal distribution. dtype: The type of the output. seed: A Python integer. Used to create a random seed for the distribution. See `tf.compat.v1.set_random_seed` for behavior. name: A name for the operation (optional). Returns: A tensor of the specified shape filled with random normal values. """ with ops.name_scope(name, "random_normal", [shape, mean, stddev]) as name: shape_tensor = tensor_util.shape_tensor(shape) mean_tensor = ops.convert_to_tensor(mean, dtype=dtype, name="mean") stddev_tensor = ops.convert_to_tensor(stddev, dtype=dtype, name="stddev") seed1, seed2 = random_seed.get_seed(seed) rnd = gen_random_ops.random_standard_normal( shape_tensor, dtype, seed=seed1, seed2=seed2) mul = rnd * stddev_tensor value = math_ops.add(mul, mean_tensor, name=name) tensor_util.maybe_set_static_shape(value, shape) return value
def random_normal(shape, mean=0.0, stddev=1.0, dtype=dtypes.float32, seed=None, name=None): """Outputs random values from a normal distribution. Args: shape: A 1-D integer Tensor or Python array. The shape of the output tensor. mean: A 0-D Tensor or Python value of type `dtype`. The mean of the normal distribution. stddev: A 0-D Tensor or Python value of type `dtype`. The standard deviation of the normal distribution. dtype: The type of the output. seed: A Python integer. Used to create a random seed for the distribution. See `tf.set_random_seed` for behavior. name: A name for the operation (optional). Returns: A tensor of the specified shape filled with random normal values. """ with ops.name_scope(name, "random_normal", [shape, mean, stddev]) as name: shape_tensor = _ShapeTensor(shape) mean_tensor = ops.convert_to_tensor(mean, dtype=dtype, name="mean") stddev_tensor = ops.convert_to_tensor(stddev, dtype=dtype, name="stddev") seed1, seed2 = random_seed.get_seed(seed) rnd = gen_random_ops.random_standard_normal( shape_tensor, dtype, seed=seed1, seed2=seed2) mul = rnd * stddev_tensor value = math_ops.add(mul, mean_tensor, name=name) return value
def random_normal(shape, mean=0.0, stddev=1.0, dtype=dtypes.float32, seed=None, name=None): """Outputs random values from a normal distribution. Example that generates a new set of random values every time: >>> tf.random.set_seed(5); >>> tf.random.normal([4], 0, 1, tf.float32) <tf.Tensor: shape=(4,), dtype=float32, numpy=..., dtype=float32)> Example that outputs a reproducible result: >>> tf.random.set_seed(5); >>> tf.random.normal([2,2], 0, 1, tf.float32, seed=1) <tf.Tensor: shape=(2, 2), dtype=float32, numpy= array([[-1.3768897 , -0.01258316], [-0.169515 , 1.0824056 ]], dtype=float32)> In this case, we are setting both the global and operation-level seed to ensure this result is reproducible. See `tf.random.set_seed` for more information. Args: shape: A 1-D integer Tensor or Python array. The shape of the output tensor. mean: A Tensor or Python value of type `dtype`, broadcastable with `stddev`. The mean of the normal distribution. stddev: A Tensor or Python value of type `dtype`, broadcastable with `mean`. The standard deviation of the normal distribution. dtype: The float type of the output: `float16`, `bfloat16`, `float32`, `float64`. Defaults to `float32`. seed: A Python integer. Used to create a random seed for the distribution. See `tf.random.set_seed` for behavior. name: A name for the operation (optional). Returns: A tensor of the specified shape filled with random normal values. """ with ops.name_scope(name, "random_normal", [shape, mean, stddev]) as name: shape_tensor = tensor_util.shape_tensor(shape) mean_tensor = ops.convert_to_tensor(mean, dtype=dtype, name="mean") stddev_tensor = ops.convert_to_tensor(stddev, dtype=dtype, name="stddev") seed1, seed2 = random_seed.get_seed(seed) rnd = gen_random_ops.random_standard_normal(shape_tensor, dtype, seed=seed1, seed2=seed2) mul = rnd * stddev_tensor value = math_ops.add(mul, mean_tensor, name=name) tensor_util.maybe_set_static_shape(value, shape) return value
def testDeterministicOpsErrors(self): with self.assertRaisesRegex( RuntimeError, "Random ops require a seed to be set when determinism is enabled."): random_ops.random_normal((1,)) with self.assertRaisesRegex( RuntimeError, "Random ops require a seed to be set when determinism is enabled."): random_ops.truncated_normal((1,)) with self.assertRaisesRegex( RuntimeError, "Random ops require a seed to be set when determinism is enabled."): random_ops.random_uniform((1,)) with self.assertRaisesRegex( errors.InvalidArgumentError, "When determinism is enabled, random ops must have a seed specified"): self.evaluate(gen_random_ops.random_standard_normal((1,), dtypes.float32))
def old_normal(dtype, seed1, seed2): return gen_random_ops.random_standard_normal( shape, dtype=dtype, seed=seed1, seed2=seed2)
def old(): with ops.device(test_util.gpu_device_name()): return gen_random_ops.random_standard_normal(shape, dtype=dtype, seed=seed1, seed2=seed2)
def old(): with ops.device("/device:CPU:0"): return gen_random_ops.random_standard_normal(shape, dtype=dtype, seed=seed1, seed2=seed2)