# Constants, Sequences, and Random Values ## Contents * [Constant Value Tensors](#AUTOGENERATED-constant-value-tensors) * [tf.zeros(shape, dtype=tf.float32, name=None)](#zeros) * [tf.zeros_like(tensor, dtype=None, name=None)](#zeros_like) * [tf.ones(shape, dtype=tf.float32, name=None)](#ones) * [tf.ones_like(tensor, dtype=None, name=None)](#ones_like) * [tf.fill(dims, value, name=None)](#fill) * [tf.constant(value, dtype=None, shape=None, name='Const')](#constant) * [Sequences](#AUTOGENERATED-sequences) * [tf.linspace(start, stop, num, name=None)](#linspace) * [tf.range(start, limit, delta=1, name='range')](#range) * [Random Tensors](#AUTOGENERATED-random-tensors) * [Examples:](#AUTOGENERATED-examples-) * [tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)](#random_normal) * [tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)](#truncated_normal) * [tf.random_uniform(shape, minval=0.0, maxval=1.0, dtype=tf.float32, seed=None, name=None)](#random_uniform) * [tf.random_shuffle(value, seed=None, name=None)](#random_shuffle) * [tf.set_random_seed(seed)](#set_random_seed) ## Constant Value Tensors
{#AUTOGENERATED-constant-value-tensors}
TensorFlow provides several operations that you can use to generate constants. - - - ### tf.zeros(shape, dtype=tf.float32, name=None)
{#zeros}
Creates a tensor with all elements set to zero. This operation returns a tensor of type `dtype` with shape `shape` and all elements set to zero. For example: ```python tf.zeros([3, 4], int32) ==> [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] ``` ##### Args: * shape: Either a list of integers, or a 1-D `Tensor` of type `int32`. * dtype: The type of an element in the resulting `Tensor`. * name: A name for the operation (optional). ##### Returns: A `Tensor` with all elements set to zero. - - - ### tf.zeros_like(tensor, dtype=None, name=None)
{#zeros_like}
Creates a tensor with all elements set to zero. Given a single tensor (`tensor`), this operation returns a tensor of the same type and shape as `tensor` with all elements set to zero. Optionally, you can use `dtype` to specify a new type for the returned tensor. For example: ```python # 'tensor' is [[1, 2, 3], [4, 5, 6]] tf.zeros_like(tensor) ==> [[0, 0, 0], [0, 0, 0]] ``` ##### Args: * tensor: A `Tensor`. * dtype: A type for the returned `Tensor`. Must be `float32`, `float64`, `int8`, `int16`, `int32`, `int64`, `uint8`, or `complex64`. * name: A name for the operation (optional). ##### Returns: A `Tensor` with all elements set to zero. - - - ### tf.ones(shape, dtype=tf.float32, name=None)
{#ones}
Creates a tensor with all elements set to 1. This operation returns a tensor of type `dtype` with shape `shape` and all elements set to 1. For example: ```python tf.ones([2, 3], int32) ==> [[1, 1, 1], [1, 1, 1]] ``` ##### Args: * shape: Either a list of integers, or a 1-D `Tensor` of type `int32`. * dtype: The type of an element in the resulting `Tensor`. * name: A name for the operation (optional). ##### Returns: A `Tensor` with all elements set to 1. - - - ### tf.ones_like(tensor, dtype=None, name=None)
{#ones_like}
Creates a tensor with all elements set to 1. Given a single tensor (`tensor`), this operation returns a tensor of the same type and shape as `tensor` with all elements set to 1. Optionally, you can specify a new type (`dtype`) for the returned tensor. For example: ```python # 'tensor' is [[1, 2, 3], [4, 5, 6]] tf.ones_like(tensor) ==> [[1, 1, 1], [1, 1, 1]] ``` ##### Args: * tensor: A `Tensor`. * dtype: A type for the returned `Tensor`. Must be `float32`, `float64`, `int8`, `int16`, `int32`, `int64`, `uint8`, or `complex64`. * name: A name for the operation (optional). ##### Returns: A `Tensor` with all elements set to 1. - - - ### tf.fill(dims, value, name=None)
{#fill}
Creates a tensor filled with a scalar value. This operation creates a tensor of shape `dims` and fills it with `value`. For example: ```prettyprint # output tensor shape needs to be [2, 3] # so 'dims' is [2, 3] fill(dims, 9) ==> [[9, 9, 9] [9, 9, 9]] ``` ##### Args: * dims: A `Tensor` of type `int32`. 1-D. Represents the shape of the output tensor. * value: A `Tensor`. 0-D (scalar). Value to fill the returned tensor. * name: A name for the operation (optional). ##### Returns: A `Tensor`. Has the same type as `value`. - - - ### tf.constant(value, dtype=None, shape=None, name='Const')
{#constant}
Creates a constant tensor. The resulting tensor is populated with values of type `dtype`, as specified by arguments `value` and (optionally) `shape` (see examples below). The argument `value` can be a constant value, or a list of values of type `dtype`. If `value` is a list, then the length of the list must be less than or equal to the number of elements implied by the `shape` argument (if specified). In the case where the list length is less than the number of elements specified by `shape`, the last element in the list will be used to fill the remaining entries. The argument `shape` is optional. If present, it specifies the dimensions of the resulting tensor. If not present, then the tensor is a scalar (0-D) if `value` is a scalar, or 1-D otherwise. If the argument `dtype` is not specified, then the type is inferred from the type of `value`. For example: ```python # Constant 1-D Tensor populated with value list. tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7] # Constant 2-D tensor populated with scalar value -1. tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.] [-1. -1. -1.]] ``` ##### Args: * value: A constant value (or list) of output type `dtype`. * dtype: The type of the elements of the resulting tensor. * shape: Optional dimensions of resulting tensor. * name: Optional name for the tensor. ##### Returns: A Constant Tensor. ## Sequences
{#AUTOGENERATED-sequences}
- - - ### tf.linspace(start, stop, num, name=None)
{#linspace}
Generates values in an interval. A sequence of `num` evenly-spaced values are generated beginning at `start`. If `num > 1`, the values in the sequence increase by `stop - start / num - 1`, so that the last one is exactly `stop`. For example: ``` tf.linspace(10.0, 12.0, 3, name="linspace") => [ 10.0 11.0 12.0] ``` ##### Args: * start: A `Tensor`. Must be one of the following types: `float32`, `float64`. First entry in the range. * stop: A `Tensor`. Must have the same type as `start`. Last entry in the range. * num: A `Tensor` of type `int32`. Number of values to generate. * name: A name for the operation (optional). ##### Returns: A `Tensor`. Has the same type as `start`. 1-D. The generated values. - - - ### tf.range(start, limit, delta=1, name='range')
{#range}
Creates a sequence of integers. This operation creates a sequence of integers that begins at `start` and extends by increments of `delta` up to but not including `limit`. For example: ``` # 'start' is 3 # 'limit' is 18 # 'delta' is 3 tf.range(start, limit, delta) ==> [3, 6, 9, 12, 15] ``` ##### Args: * start: A 0-D (scalar) of type `int32`. First entry in sequence. * limit: A 0-D (scalar) of type `int32`. Upper limit of sequence, exclusive. * delta: A 0-D `Tensor` (scalar) of type `int32`. Optional. Default is 1. Number that increments `start`. * name: A name for the operation (optional). ##### Returns: An 1-D `int32` `Tensor`. ## Random Tensors
{#AUTOGENERATED-random-tensors}
TensorFlow has several ops that create random tensors with different distributions. The random ops are stateful, and create new random values each time they are evaluated. The `seed` keyword argument in these functions acts in conjunction with the graph-level random seed. Changing either the graph-level seed using [`set_random_seed`](constant_op.md#set_random_seed) or the op-level seed will change the underlying seed of these operations. Setting neither graph-level nor op-level seed, results in a random seed for all operations. See [`set_random_seed`](constant_op.md#set_random_seed) for details on the interaction between operation-level and graph-level random seeds. ### Examples:
{#AUTOGENERATED-examples-}
```python # Create a tensor of shape [2, 3] consisting of random normal values, with mean # -1 and standard deviation 4. norm = tf.random_normal([2, 3], mean=-1, stddev=4) # Shuffle the first dimension of a tensor c = tf.constant([[1, 2], [3, 4], [5, 6]]) shuff = tf.random_shuffle(c) # Each time we run these ops, different results are generated sess = tf.Session() print sess.run(norm) print sess.run(norm) # Set an op-level seed to generate repeatable sequences across sessions. c = tf.constant([[1, 2], [3, 4], [5, 6]]) sess = tf.Session() norm = tf.random_normal(c, seed=1234) print sess.run(norm) print sess.run(norm) ``` Another common use of random values is the intialization of variables. Also see the [Variables How To](../../how_tos/variables/index.md). ```python # Use random uniform values in [0, 1) as the initializer for a variable of shape # [2, 3]. The default type is float32. var = tf.Variable(tf.random_uniform([2, 3]), name="var") init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) print sess.run(var) ``` - - - ### tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
{#random_normal}
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 [`set_random_seed`](constant_op.md#set_random_seed) for behavior. * name: A name for the operation (optional). ##### Returns: A tensor of the specified shape filled with random normal values. - - - ### tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
{#truncated_normal}
Outputs random values from a truncated normal distribution. The generated values follow a normal distribution with specified mean and standard deviation, except that values whose magnitude is more than 2 standard deviations from the mean are dropped and re-picked. ##### 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 truncated normal distribution. * stddev: A 0-D Tensor or Python value of type `dtype`. The standard deviation of the truncated normal distribution. * dtype: The type of the output. * seed: A Python integer. Used to create a random seed for the distribution. See [`set_random_seed`](constant_op.md#set_random_seed) for behavior. * name: A name for the operation (optional). ##### Returns: A tensor of the specified shape filled with random truncated normal values. - - - ### tf.random_uniform(shape, minval=0.0, maxval=1.0, dtype=tf.float32, seed=None, name=None)
{#random_uniform}
Outputs random values from a uniform distribution. The generated values follow a uniform distribution in the range `[minval, maxval)`. The lower bound `minval` is included in the range, while the upper bound `maxval` is excluded. ##### Args: * shape: A 1-D integer Tensor or Python array. The shape of the output tensor. * minval: A 0-D Tensor or Python value of type `dtype`. The lower bound on the range of random values to generate. * maxval: A 0-D Tensor or Python value of type `dtype`. The upper bound on the range of random values to generate. * dtype: The type of the output. * seed: A Python integer. Used to create a random seed for the distribution. See [`set_random_seed`](constant_op.md#set_random_seed) for behavior. * name: A name for the operation (optional). ##### Returns: A tensor of the specified shape filled with random uniform values. - - - ### tf.random_shuffle(value, seed=None, name=None)
{#random_shuffle}
Randomly shuffles a tensor along its first dimension. The tensor is shuffled along dimension 0, such that each `value[j]` is mapped to one and only one `output[i]`. For example, a mapping that might occur for a 3x2 tensor is: ```python [[1, 2], [[5, 6], [3, 4], ==> [1, 2], [5, 6]] [3, 4]] ``` ##### Args: * value: A Tensor to be shuffled. * seed: A Python integer. Used to create a random seed for the distribution. See [`set_random_seed`](constant_op.md#set_random_seed) for behavior. * name: A name for the operation (optional). ##### Returns: A tensor of same shape and type as `value`, shuffled along its first dimension. - - - ### tf.set_random_seed(seed)
{#set_random_seed}
Sets the graph-level random seed. Operations that rely on a random seed actually derive it from two seeds: the graph-level and operation-level seeds. This sets the graph-level seed. Its interactions with operation-level seeds is as follows: 1. If neither the graph-level nor the operation seed is set: A random seed is used for this op. 2. If the graph-level seed is set, but the operation seed is not: The system deterministically picks an operation seed in conjunction with the graph-level seed so that it gets a unique random sequence. 3. If the graph-level seed is not set, but the operation seed is set: A default graph-level seed and the specified operation seed are used to determine the random sequence. 4. If both the graph-level and the operation seed are set: Both seeds are used in conjunction to determine the random sequence. To illustrate the user-visible effects, consider these examples: To generate different sequences across sessions, set neither graph-level nor op-level seeds: ```python a = tf.random_uniform([1]) b = tf.random_normal([1]) print "Session 1" with tf.Session() as sess1: print sess1.run(a) # generates 'A1' print sess1.run(a) # generates 'A2' print sess1.run(b) # generates 'B1' print sess1.run(b) # generates 'B2' print "Session 2" with tf.Session() as sess2: print sess2.run(a) # generates 'A3' print sess2.run(a) # generates 'A4' print sess2.run(b) # generates 'B3' print sess2.run(b) # generates 'B4' ``` To generate the same repeatable sequence for an op across sessions, set the seed for the op: ```python a = tf.random_uniform([1], seed=1) b = tf.random_normal([1]) # Repeatedly running this block with the same graph will generate the same # sequence of values for 'a', but different sequences of values for 'b'. print "Session 1" with tf.Session() as sess1: print sess1.run(a) # generates 'A1' print sess1.run(a) # generates 'A2' print sess1.run(b) # generates 'B1' print sess1.run(b) # generates 'B2' print "Session 2" with tf.Session() as sess2: print sess2.run(a) # generates 'A1' print sess2.run(a) # generates 'A2' print sess2.run(b) # generates 'B3' print sess2.run(b) # generates 'B4' ``` To make the random sequences generated by all ops be repeatable across sessions, set a graph-level seed: ```python tf.set_random_seed(1234) a = tf.random_uniform([1]) b = tf.random_normal([1]) # Repeatedly running this block with the same graph will generate different # sequences of 'a' and 'b'. print "Session 1" with tf.Session() as sess1: print sess1.run(a) # generates 'A1' print sess1.run(a) # generates 'A2' print sess1.run(b) # generates 'B1' print sess1.run(b) # generates 'B2' print "Session 2" with tf.Session() as sess2: print sess2.run(a) # generates 'A1' print sess2.run(a) # generates 'A2' print sess2.run(b) # generates 'B1' print sess2.run(b) # generates 'B2' ``` ##### Args: * seed: integer.