Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
 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))
Exemplo n.º 6
0
 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)