Я пытаюсь выучить тензорный поток из рабочих примеров в Интернете, но наткнулся на пример, где меня буквально интересует, как он работает. Может ли кто-нибудь объяснить математику, стоящую за этой конкретной функцией тензорного потока, и как [ns] получить свое значение из логического типа данных.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
Y, X = np.mgrid[-2.3:2.3:0.005, -5:5:0.005]
Z = X+1j*Y
c = tf.constant(Z, np.complex64)#.astype(np.complex64))
zs = tf.Variable(c)
ns = tf.Variable(tf.zeros_like(c, tf.float32))
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
zs_ = zs*zs + c
not_diverged = tf.abs(zs_) > 4
step = tf.group(zs.assign(zs_),
ns.assign_add(tf.cast(not_diverged, tf.float32)))
nx = tf.reduce_sum(ns)
zx = tf.reduce_sum(zs_)
cx = tf.reduce_sum(c)
zf = tf.reduce_all(not_diverged)
for i in range(200):
step.run()
print(sess.run([nx,zx,cx,zf]))
plt.imshow(ns.eval())
plt.show()