Mandelbrot Set In TensorFlow – Compute Quickly

Free TensorFlow course with real-time projects Start Now!!

Today, in this TensorFlow Tutorial, we will see TensorFlow Mandelbrot Set. We’ll be visualizing the famous Chaos Theory Mandelbrot Set in TensorFlow. Moreover, in this TensorFlow Mandelbrot set.

We will see the set up for Mandelbrot Set and session and variable initialization in TensorFlow. Along with this, we will also look at the what Mandelbrot set actually is and computation of Mandelbrot Set in TensorFlow with an example.

So, let’s begin TensorFlow Mandelbrot Set.

What is Mandelbrot Set?

According to Wikipedia, “The Mandelbrot set is a famous example of a fractal in mathematics. The Mandelbrot set is important for the chaos theory. The edging of the set shows a self-similarity, which is not perfect because it has deformations.

The Mandelbrot set can be explained with the equation zn+1 = zn2 + c. In that equation, c and z are complex numbers and n is zero or a positive integer (natural number).

Starting with z0=0, c is in the Mandelbrot set if the absolute value of zn never becomes larger than a certain number (that number depends on c), no matter how large n gets.”

TensorFlow Mandelbrot Set

TensorFlow Mandelbrot Set

Visualizing the set has nothing to do with machine learning. It can be thought of as another TensorFlow example for mathematics. So, let’s learn how can we compute Mandelbrot set in TensorFlow.

Setup For Mandelbrot Set in TensorFlow

For Mandelbrot Set in TensorFlow, you’ll need a few imports to get started.

# Import libraries for simulation
import tensorflow as tf
import numpy as np
# Imports for visualization
import PIL.Image
from io import BytesIO
from IPython.display import Image, display

Technology is evolving rapidly!
Stay updated with DataFlair on WhatsApp!!

Now, define a function to actually display the image once you have iteration counts.

def DisplayFractal(a, fmt='jpeg'):
  """Display an array of iteration counts as a
     colorful picture of a fractal."""
  a_cyclic = (6.28*a/20.0).reshape(list(a.shape)+[1])
  img = np.concatenate([10+20*np.cos(a_cyclic),
                        30+50*np.sin(a_cyclic),
                        155-80*np.cos(a_cyclic)], 2)
  img[a==a.max()] = 0
  a = img
  a = np.uint8(np.clip(a, 0, 255))
  f = BytesIO()
  PIL.Image.fromarray(a).save(f, fmt)
  display(Image(data=f.getvalue()))

 

Session & Variable Initialization in Mandelbrot Set

Here an interactive session is used, but a regular session would work as well.

sess = tf.InteractiveSession()

Introducing NumPy with Tensorflow.

# Use NumPy to create a 2D array of complex numbers
Y, X = np.mgrid[-1.3:1.3:0.005, -2:1:0.005]
Z = X+1j*Y

Initializing TensorFlow tensors.

xs = tf.constant(Z.astype(np.complex64))
zs = tf.Variable(xs)
ns = tf.Variable(tf.zeros_like(xs, tf.float32))

Now, as you already aware that TensorFlow requires you to explicitly declare variables before using them.

tf.global_variables_initializer().run()

Running Computation – TensorFlow Mandelbrot Set

Now, we specify more of the computation for Mandelbrot set in TensorFlow.

# Compute the new values of z: z^2 + x
zs_ = zs*zs + xs
# Have we diverged with this new value?
not_diverged = tf.abs(zs_) < 4
# Operation to update the zs and the iteration count.
#
# Note: We keep computing zs after they diverge! This
#       is very wasteful! There are better, if a little
#       less simple, ways to do this.
#
step = tf.group(
  zs.assign(zs_),
  ns.assign_add(tf.cast(not_diverged, tf.float32))
  )

and we run it for a couple hundred iterations:
for i in range(200): step.run()

Then, displaying the result using:
DisplayFractal(ns.eval())

Mandelbrot Set in TensorFlow- Running the Computation

Mandelbrot Set in TensorFlow- Running the Computation

So, this was all about Mandelbrot Set in TensorFlow. Hope you like and understand our explanation of computing Mandelbrot Set using TensorFlow.

Conclusion: TensorFlow Mandelbrot Set

Hence, we saw the concept of Mandelbrot Set in TensorFlow, just like the Mandelbrot Set solution. TensorFlow proves to be a great tool for visualizing and understanding not only machine learning concepts but complex mathematical functions including random processes and graph theory.

At last, we discussed how to run the computation for TensorFlow Mandelbrot Set. Next up, is solving PDEs using TensorFlow. Furthermore, for any query regarding Mandelbrot Set in TensorFlow, feel free to ask in the comment section.

Did you like our efforts? If Yes, please give DataFlair 5 Stars on Google

follow dataflair on YouTube

Leave a Reply

Your email address will not be published. Required fields are marked *