[PYTHON] TensorFlow Tutorial-Mandelbrot Set (Übersetzung)

TensorFlow Tutorial (Mandelbrot Set) https://www.tensorflow.org/versions/master/tutorials/mandelbrot/index.html#mandelbrot-set Es ist eine Übersetzung von. Wir freuen uns darauf, auf Übersetzungsfehler hinzuweisen.


Die Visualisierung von Mandelbrot-Mengen ist kein maschinelles Lernen, aber ein unterhaltsames Beispiel für die Verwendung von TensorFlow für die allgemeine Mathematik. Dies ist eigentlich eine ziemlich einfache Implementierung der Visualisierung, aber es bleibt der Punkt. (Später können wir im Folgenden eine ausführlichere Implementierung bereitstellen, um ein wirklich schöneres Bild zu erhalten.)

Hinweis: Dieses Tutorial wurde ursprünglich für das IPython-Notizbuch erstellt.

Grundlegende Konfiguration

Sie benötigen einige Importe, um loszulegen.

# Import libraries for simulation
import tensorflow as tf
import numpy as np

# Imports for visualization
import PIL.Image
from cStringIO import StringIO
from IPython.display import clear_output, Image, display
import scipy.ndimage as nd

Definiert eine Funktion, die eine Iterationszahl empfängt und das Bild tatsächlich anzeigt.

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 = StringIO()
  PIL.Image.fromarray(a).save(f, fmt)
  display(Image(data=f.getvalue()))

Initialisierung von Sitzungen und Variablen

Ich benutze oft interaktive Sitzungen, um zu basteln, aber es funktioniert genauso für reguläre Sitzungen.

   sess = tf.InteractiveSession()

NumPy und TensorFlow können frei gemischt werden, was praktisch ist.

# Use NumPy to create a 2D array of complex numbers on [-2,2]x[-2,2]

Y, X = np.mgrid[-1.3:1.3:0.005, -2:1:0.005]
Z = X+1j*Y

Definiert und initialisiert den TensorFlow-Tensor.

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

In TensorFlow müssen Variablen explizit initialisiert werden, bevor sie verwendet werden können.

tf.initialize_all_variables().run()

Definition und Durchführung von Berechnungen

Geben Sie mehrere Berechnungen an ...

# Compute the new values of z: z^2 + x
zs_ = zs*zs + xs

# Have we diverged with this new value?
not_diverged = tf.complex_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, "float32"))
  )

... und mach es 200 Schritte

for i in range(200): step.run()

Werfen wir einen Blick auf das, was wir haben.

DisplayFractal(ns.eval())

図

Nicht schlecht!

Recommended Posts

TensorFlow Tutorial-Mandelbrot Set (Übersetzung)
TensorFlow Tutorial - TensorFlow Mechanics 101 (Übersetzung)
TensorFlow Tutorial-Bilderkennung (Übersetzung)
TensorFlow Tutorial-MNIST Daten herunterladen (Übersetzung)
TensorFlow Tutorial-Sequenztransformationsmodell (Übersetzung)
TensorFlow Tutorial-Partielle Differentialgleichungen (Übersetzung)
TensorFlow Tutorial-Convolution Neuronales Netz (Übersetzung)
TensorFlow MNIST Für ML Anfänger Übersetzung
TensorFlow Tutorial-Vektordarstellung von Wörtern (Übersetzung)
TensorFlow Deep MNIST für Expertenübersetzung