Updated March 14, 2023

## Introduction to Tensorflow variable

The following article provides an outline for the Tensorflow variable. All operations in TensorFlow use tensors, and all values in a tensor have the same data type. As a result, TensorFlow predicts the shape when you print tensor. On the other hand, the TensorFlow shape property can be used to obtain the tensor’s shape.

### What is the TensorFlow variable?

When building a deep learning model in TensorFlow, we require Variables to represent the model’s parameters. TensorFlow Variables are tensor-based in-memory buffers that persist across several graph executions. As training progresses, the value of a variable will change, and each variation will get the model closer to the ideal system.

All computations in TensorFlow go through one or more sensors. A tensor can be expressed in a scalar format or with a multidimensional format. A tf.tensor is a three-property object that includes:

- A distinctive label (name)
- a measurement (shape)
- a type of data (dtype)

Variable characteristics

- Between executions of a session, a variable retains its value.
- An executing session must initialise a variable.
- Variables are objects that belong to the Variable class.
- Variables can be used to save data in arrays and to proceed it using TensorFlow operations.
- Before a graph may be used for the first time, variables must be explicitly initialized.
- We can save the values saved in variables to disc and then retrieve them for later use.

### Create a variable

The Variable class can be used to reflect the fact that data always arrives with different values. It will depict a node with constantly changing values. We can use the tf.getvariable() method to generate a variable. Variable initializers must be run before any other operations in your model can be executed. The simplest approach to achieve this is to create an op that executes all of the variable initializers before using the model.

`Var1 = tf. Variable (<starting Val>, name=<optional>)`

The first parameter determines the variable’s initial value, while the second optional parameter defines the variable’s name.

library (tensor flow)

`my_var <- tf$Variable (tf$zeros (shape (1,2,3)))`

The above format creates three-dimensional shapes done with zeros. They have a default dtype tf@float32. Most TensorFlow optimizers feature specialised ops that update variable values efficiently using a gradient descent-like technique.

`<- tf$Variable (0)`

var$assign_add(10)

Variables in TensorFlow must be initialised before they may be used. Constant tensors are the polar opposite of constant tensors.

`We = tf. Variable(tf. zeros((2,2)), name="weights")`

Res = tf.Variable(tf.random_normal((2,2)), name="random weights")

with tf.Session() as ses1:

ses1.run(tf.initialize_all_variables())

print(ses1.run(We))

print(ses1.run(Res))

Here weights is a variable object that could be assigned from a constant. Hundreds of variables can be found in complicated TensorFlow models.

To avoid collisions, tf.variable scope() provides simple name-spacing.

Within a variable scope, tf.get variable() creates/accesses variables.

### TensorFlow variable Lifecycles

The lifecycle of a tf.Variable instance in Python-based TensorFlow is the same as that of other Object storage. When a variable has no references, it is immediately deallocated. Variables can also be given names, which makes them easier to track and debug. Two variables with the same name are allowed.

`.m= tf.Variable(my_tensor, name="John")`

n= tf.Variable(my_tensor + 1, name="John")

print (m == n)

Therefore, this produces

`tf.Tensor(`

[[False False]
[False False]], shape= (2, 2), dtype=bool)

When we declare a Variable, we may use the tf.assign() function to alter its value in the future, and we can use a value or an action to initialise it.

The function tf.global variables initializer () initializes all variables in the code with the value supplied as a parameter, but it does it in async mode, which means it doesn’t operate properly when variables have dependencies.

Next, we shall see how to update a variable.

`Updating Variable State`

state = tf.Variable(0, name="increase")

nval = tf.add (state, tf. constant (1))

update = tf. assign (state, nval)

with tf.Session() as se1:

se1.run(tf.initialize_all_variables ())

print(se1.run(state))

for i _ in range(3):

se1.run(update)

print(se1.run(state))

### TensorFlow variable Examples

Different examples are mentioned below:

#### Example #1 – Using the loss of training

`x_hat = tf.constant(36, name='x_hat')`

x = tf.constant(39, name='x')

loss = tf.Variable((x - x_hat)**2, name='loss')

init = tf.global_variables_initializer()

tf.Session() as session:

session.run(init)

print(session.run(loss))

**Explanation**

loss=(-y). Defining a constant to 36 and creating a variable for loss manipulation. Next, creating a session and output is displayed.

**Output**

**9**

#### Example #2

`from __future__ import absolute_import`

from __future__ import division

from __future__ import print_function

import tensorflow as tf

va1 = tf.Variable(11, name="va1")

se1 = tf.Session()

init = tf. global_variables_initializer ()

se1.run(init)

print(se1.run(va1))

se1.run(va1.assign(12))

print(se1.run(va1))

se1.run(va1.assign_add(12))

print(se1.run(va1))

se1.run(va1.assign_sub(4))

print(se1.run(va1))

**Explanation**

The tensor uses a variable to initialize a value in the above code. Next, add, and sub-functions are used to increment and decrement an assigned tensor value.

**Output**

#### Example #3

`import tensorflow as tf`

vble = tf.get_variable("vble", [1, 2])

print(vble)

var_i = tf.get_variable("var_i", [1, 2], dtype=tf.int32, initializer=tf.zeros_initializer)

print(var_i)

t_ct = tf.constant([[11, 12],[13, 14]])

var_2 = tf.get_variable("var_2", dtype=tf.int32, initializer=t_ct)

print(var_2)

**Explanation**

Because the shape of ‘initializer’ is used, there is no need to include the ‘values’ if the initializer is supplied. The above code’s output is as follows:

**Output**

#### Example #4

`from __future__ import absolute_import`

from __future__ import division

from __future__ import print_function

import tensorflow as tf

tens1 = tf.constant([2.1, 3.1, 4.1])

varX = tf.Variable(tens1 , name="varX")

varY = tf.Variable([12, 21.1, 34.5], name="varY")

varZ = tf.Variable(["AU", "IND"], name="varZ")

varZY = tf.Variable([varX, varY], name="varZY")

print(format(varX))

print(format(varY))

print(format(varZ))

print(format(varZY))

**Explanation**

Here a tensor creates four different variables with values. The output takes the shape of the variable to display an output.

**Output**

#### Example #5 – Variable Assignment

`from __future__ import absolute_import`

from __future__ import division

from __future__ import print_function

import tensorflow as tf

varM = tf.Variable(5, name="varM")

se1 = tf.Session()

init = tf.global_variables_initializer ()

se1.run(init)

print(se1.run(varM))

se1.run(varM.assign(15))

print(se1.run(varM))

se1.run(varM.assign_add(10))

print(se1.run(varM))

se1.run(varM.assign_sub(4))

print(se1.run(varM))

** **

**Explanation**

Generally, we utilize the Variable.assign(), Variable.assign add (), and Variable.assign sub () methods to update, increment, and reduce the value of Variable. In the above code, we have used Tensor flow with a variable assignment where we first create a variable varM and started a session by initialization. Next, to assign a new value to a session, use the assign () method. And the output is shown below after increment and decrement operation.

**Output**

#### Example #6

`import numpy as np`

import tensorflow as tf

zz= tf.Variable(0, dtype=tf.float32)

cost = 15 + 3*zz + zz*zz

tr1 = tf.train.GradientDescentOptimizer(0.01). minimize(cost)

init = tf.global_variables_initializer()

se1 = tf.Session()

se1.run(init)

print(se1.run(zz))

se1.run(tr1)

print(se1.run(zz))

for j in range (10000):

se1.run(tr1)

print(se1.run(zz))

**Explanation**

The Variable was initially set to 0, then changed to -0.049999997 after only one step of gradient descent, and finally to -2.499994 after 10.000 steps. An interactive session is essential when numerous separate sessions are executed in the same script.

**Output**

### Conclusion

Finally, this article discusses the tensor flow variables and their initialization in depth. We’ve also seen a few examples of how variables affect a tensor flow in Python. To initialize a variable as a constant, we must call a function Object (). the initial value can be handed in as an argument. Object() variables may be simply added to the computational graph by using a function.

### Recommended Articles

This is a guide to Tensorflow variable. Here we discuss a few examples of how variables affect a tensor flow in Python and the tensor flow variables and their initialization in depth. You may also have a look at the following articles to learn more –