Skip to main content
 首页 » 编程设计

python之如何在 Mandlebrot tensorflow 程序中显示图像。当前输出是 IPython.core.display.Image object>

2025年05月04日21JustinYoung

'''导入模拟库'''

import tensorflow as tf 
import numpy as np 

'''为可视化导入'''

from PIL.Image 
from io import BytesIO 
from IPython.display import Image, display 

'''现在我们将定义一个函数来实际显示图像 迭代次数'''

def DisplayFractal(a, fmt='jpeg'): 
 
    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())) 
 
 
sess = tf.InteractiveSession() 
# 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 
print(Z) 
#Now we define and initialize TensorFlow tensors. 
 
xs = tf.constant(Z.astype(np.complex64)) 
zs = tf.Variable(xs) 
ns = tf.Variable(tf.zeros_like(xs, tf.float32)) 
 
 
tf.global_variables_initializer().run() 
 
zs_ = zs*zs + xs 
print(zs) 
 
# Have we diverged with this new value? 
not_diverged = tf.abs(zs_) < 4 

''' 更新 zs 和迭代计数的操作。 注意:我们在它们发散后继续计算 zs!这 很浪费!有更好的,如果有一点 不太简单,方法来做到这一点。 ''' step = tf.group(zs.assign(zs_), ns.assign_add(tf.cast(not_diverged, tf.float32)))

for i in range(200): step.run() 
 
DisplayFractal(ns.eval()) 

请您参考如下方法:

我遇到了同样的问题。您必须在 Jupyter notebook 中运行 TensorFlow 示例: http://jupyter.org/

如果您从其他 IDE(例如(Spyder))运行它,您将看到的是 <IPython.core.display.Image object>在控制台中。