Home

How to Create Tensors with Random Values

|
Updated:  
2018-06-19 2:30:06
|
From The Book:  
TensorFlow For Dummies
Explore Book
Buy On Amazon
Many TensorFlow applications require tensors that contain random values instead of predetermined values. The tf package provides many functions for creating random-valued tensors and the following table lists five of them.

Creating Tensors with Random Values

Function Description
random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) Creates a tensor with normally distributed values
truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) Creates a tensor with normally distributed values excluding those lying outside two standard deviations
random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None) Creates a tensor with uniformly distributed values between the minimum and maximum values
random_shuffle(tensor, seed=None, name=None) Shuffles a tensor along its first dimension
set_random_seed(seed) Set the seed value for all random number generation in the graph
The random_normal and truncated_normal functions create tensors containing normally distributed values. Their arguments determine the characteristics of the distribution. This figure shows what a normal distribution looks like with a mean of 0.0 and a standard deviation (σ) of 1.0.

tensorflow-deviation Values beyond three standard deviations from the mean are highly unlikely.

Standard deviation tells you how much a normally distributed variable is expected to vary from the mean. Approximately 68.2 percent of the time, a variable lies within one standard deviation from the mean, while 95.4 percent of the time, the variable lies within two standard deviations.

In the random_normal and truncated_normal functions, the default mean is 0.0, and the default standard deviation is 1.0. random_normal generates random values throughout the distribution, so very large and very small values are unlikely but possible. The following code calls random_normal to generate 20 random values:

rnd_ints = tf.random_normal([10>, dtype=tf.float64)
In contrast, truncated_normal guarantees that the generated values lie within two standard deviations from the mean. Any value outside this range will be discarded and reselected. In this manner, truncated_normal ensures that the tensor won't contain any improbably large or small values.

random_uniform creates a tensor containing uniformly distributed values that lie between a minimum and maximum. Because the distribution is uniform, every value is equally likely.

random_shuffle doesn't create a new tensor, but randomly shuffles the values in an existing tensor. This shuffling is limited to the tensor’s first dimension.

Each function in the table accepts a seed parameter that initializes the random number generator. Setting a random seed is important to ensure that sequences aren’t repeated.

You can obtain and set a seed value by calling set_random_seed, which accepts a floating-point value and makes the argument the seed for every operation in the current graph.

About This Article

This article is from the book: 

About the book author:

Matthew Scarpino has been a programmer and engineer for more than 20 years. He has worked extensively with machine learning applications, especially those involving financial analysis, cognitive modeling, and image recognition. Matthew is a Google Certified Data Engineer and blogs about TensorFlow at tfblog.com.