How to calculate euclidean norm in TensorFlow

This post describes how to calculate `euclidean norm` in `TensorFlow`. Lets understand `euclidean norm` implementation with below code snippets

Calculating `euclidean norm` with `TensorFlow`

``````
import tensorflow as tf

tensor = tf.constant([[1,2], [3,4]], dtype=tf.float32)

print(tf.norm(
tensor, ord='euclidean', axis=None, keepdims=None, name=None
))
```
```
Output
``````
tf.Tensor(5.477226, shape=(), dtype=float32)
```
```

Now lets see how `tf.norm` is calculating the norm, what all math operation it is performing behind the scenes and produce the same result without using `tf.norm`

``````
import tensorflow as tf
import math
from tensorflow.python.ops import math_ops

tensor = tf.constant([[1,2], [3,4]], dtype=tf.float32)
## get conjugate of tensor
tensor1 = math_ops.conj(tensor)
print(tensor1)

## multiply tensor to conjugate tensor
tensor2 = tensor*math_ops.conj(tensor)
print(tensor2)

## apply reduce_sum on tensor2
tensor3 = math_ops.reduce_sum(tensor2)
print(tensor3)

## apply sqrt on tensor3
output = math_ops.sqrt(tensor3)
print(output)

## output using tf.norm
out_norm = tf.norm(tensor, ord='euclidean', axis=None, keepdims=None, name=None)
print(out_norm)

```
```
Output
``````
tf.Tensor(
[[1. 2.]
[3. 4.]], shape=(2, 2), dtype=float32)

tf.Tensor(
[[ 1.  4.]
[ 9. 16.]], shape=(2, 2), dtype=float32)

tf.Tensor(30.0, shape=(), dtype=float32)

tf.Tensor(5.477226, shape=(), dtype=float32)

tf.Tensor(5.477226, shape=(), dtype=float32)
```
```

In the above snippet we calculated `euclidean norm` with `axis=None`, now we will calculate along the `axis=0`

``````
import tensorflow as tf
import math
from tensorflow.python.ops import math_ops

tensor = tf.constant([[1,2], [3,4]], dtype=tf.float32)
## get conjugate of tensor
tensor1 = math_ops.conj(tensor)
print(tensor1)

## multiply tensor to conjugate tensor
tensor2 = tensor*math_ops.conj(tensor)
print(tensor2)

## apply reduce_sum on tensor2
tensor3 = math_ops.reduce_sum(tensor2, axis=0)
print(tensor3)

## apply sqrt on tensor3
output = math_ops.sqrt(tensor3)
print(output)

## output using tf.norm
out_norm = tf.norm(tensor, ord='euclidean', axis=0, keepdims=None, name=None)
print(out_norm)

```
```
Output
``````
tf.Tensor(
[[1. 2.]
[3. 4.]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[ 1.  4.]
[ 9. 16.]], shape=(2, 2), dtype=float32)
tf.Tensor([10. 20.], shape=(2,), dtype=float32)
tf.Tensor([3.1622777 4.472136 ], shape=(2,), dtype=float32)
tf.Tensor([3.1622777 4.472136 ], shape=(2,), dtype=float32)
```
```

So we got the same output with and without using `tf.norm`

Change `axis=1` and calculate `euclidean norm`

``````
import tensorflow as tf
import math
from tensorflow.python.ops import math_ops

tensor = tf.constant([[1,2], [3,4]], dtype=tf.float32)
## get conjugate of tensor
tensor1 = math_ops.conj(tensor)
print(tensor1)

## multiply tensor to conjugate tensor
tensor2 = tensor*math_ops.conj(tensor)
print(tensor2)

## apply reduce_sum on tensor2
tensor3 = math_ops.reduce_sum(tensor2, axis=1)
print(tensor3)

## apply sqrt on tensor3
output = math_ops.sqrt(tensor3)
print(output)

## output using tf.norm
out_norm = tf.norm(tensor, ord='euclidean', axis=1, keepdims=None, name=None)
print(out_norm)

```
```
Output
``````
tf.Tensor(
[[1. 2.]
[3. 4.]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[ 1.  4.]
[ 9. 16.]], shape=(2, 2), dtype=float32)
tf.Tensor([ 5. 25.], shape=(2,), dtype=float32)
tf.Tensor([2.236068 5.      ], shape=(2,), dtype=float32)
tf.Tensor([2.236068 5.      ], shape=(2,), dtype=float32)
```
```

Category: TensorFlow

Similar Articles

TensorFlow | How to use tf.reduce_sum in TensorFlow

Python For Beginners