# Calculate Euclidean Distance in TensorFlow: A Step Guide – TensorFlow Tutorial

By | May 18, 2020

Euclidean Distance is common used to be a loss function in deep learning. It is defined as:

In this tutorial, we will introduce how to calculate euclidean distance of two tensors.

## Create two tensors

We will create two tensors, then we will compute their euclidean distance.

Here is an example:

import tensorflow as tf
import numpy as np

x = tf.Variable(np.array([[1, 2, 2, 1],[2, 1, 3, 4], [4, 3, 1, 1]]), dtype = tf.float32)

xs = tf.Variable(np.array([[1, 3, 2, 1],[2, 2, 5, 4], [4, 1, 3, 1]]), dtype = tf.float32)


You should notice tensors x and xs are 2 dims.

## Create a function to calculate euclidean distance

We have created a function to compute euclidean distance of two tensors in tensorflow. Here is an example:

#x and y are 2 dims
def euclideanDistance(x, y):
dist = tf.sqrt(tf.reduce_sum(tf.square(x - y), 1))
return dist

## Calculate euclidean distance

Finally, we will calculate euclidean distance.

d = euclideanDistance(x, xs)
init = tf.global_variables_initializer()
init_local = tf.local_variables_initializer()

with tf.Session() as sess:
sess.run([init, init_local])
print(sess.run(d))


Run this code, you will get the distance is:

[1.       2.236068 2.828427]

In order to calculate the average euclidean distance, we can create a new function.

def euclideanMeanDistance(x, y):
dist = tf.sqrt(tf.reduce_sum(tf.square(x - y), 1))
return tf.reduce_mean(dist)

Then we will get the average euclidean distance is:

d = euclideanMeanDistance(x, xs)

Run the code again, we will get the result:

2.0214984

However, tf.sqrt() may output NaN value, to fix this error, you can read:

Fix TensorFlow tf.sqrt() NaN Error: A Beginner Guide – TensorFlow Tutorial

There is another way to compute euclidean distance in tensorflow, we can use tf.norm().

## Calculate euclidean distance using tf.norm()

Here is an example:

def euclideanMeanDistance(self, x, y):
dist = tf.reduce_mean(tf.norm(x - y, axis=1, ord='euclidean'))
return dist

Where x and y is 2 dims, run this code, you also can get the result:

2.0214984