Usually, when we start using TensorFlow, it’s very common to think that defining variables is just as trivial as a HelloWorld program, but understanding how variables (and placeholders) work under the hood is very important to understand more complex concepts because those concepts heavily use variables/placeholders; and, if we don’t understand the information flow between variables, it could be harder to have a clear idea of the implemented algorithms in TensorFlow.

**Variables** are the parameters of the algorithm. The main way to create a variable is by using the *Variable()* function, although, we still need to initialize it. Initializing is what puts the variable with the corresponding methods on the computational graph.

seq = tf.linspace(0., 7, 8)
seq_var = tf.Variable(seq)
*# Initialize variables in session*
sess = tf.Session()
initialize_op = tf.global_variables_initializer()
sess.run(initialize_op)

While each variable has an *initializer()* method, the most common way to do this is to use the function *global_variables_initializer()*. This function creates an operation in the graph that initializes all variables. Nevertheless, we can initialize variables depending on the results of initializing another variable, as follows:

sess = tf.Session()
first_var = tf.Variable(tf.lin_space(0., 7, 8), name='1st_var')
sess.run(first_var.initializer)
*# first_var: <tf.Variable '1st_var:0' shape=(8,), dtype=float32_ref>*
*# second_var dimensions depends on first_var*
second_var = tf.Variable(tf.zeros_like(first_var), name='2nd_var')
sess.run(second_var.initializer)
*# second_var: <tf.Variable '2nd_var:0' shape=(8,), dtype=float32_ref>*

**Placeholders** are just holding the position for data to be fed into the graph. To put a placeholder in the graph, we must perform at least one operation on the placeholder.

sess = tf.Session()
x = tf.placeholder(tf.float32, shape=[2, 2])
*# y is the operation to run on x placeholder*
y = tf.identity(x)
*# x_vals is data to feed into the x placeholder*
x_vals = np.random.rand(2, 2)
*# Runs y operation*
sess.run(y, feed_dict={x: x_vals})

TensorFlow will not return a self-referenced placeholder in the feed dictionary.

With these concepts clear, we can move forward with TensorFlow. See you next time with more TF!

### Like this:

Like Loading...

*Related*