2016-07-22 110 views
0

我正在尝试使用tensorflow来实现生命游戏,并使用matplotlib.animation来描绘动画。尽管图像被显示,但由于某些原因,图像不具有动画效果。下面是我使用的代码:Tensorflow + Matplotlib动画

编号:http://learningtensorflow.com/lesson8/

IDE:Pycharm社区版

我传递块传输=在FuncAnimation假,因为它无法在Mac正与块传输=真

shape = (50, 50) 
initial_board = tf.random_uniform(shape, minval=0, maxval=2, dtype=tf.int32) 
board = tf.placeholder(tf.int32, shape=shape, name='board') 

def update_board(X): 
# Check out the details at: https://jakevdp.github.io/blog/2013/08/07/conways-game-of-life/ 
# Compute number of neighbours, 
N = convolve2d(X, np.ones((3, 3)), mode='same', boundary='wrap') - X 
# Apply rules of the game 
X = (N == 3) | (X & (N == 2)) 
return X 

board_update = tf.py_func(update_board, [board], [tf.int32]) 
fig = plt.figure() 

if __name__ == '__main__': 
with tf.Session() as sess: 
    initial_board_values = sess.run(initial_board) 
    X = sess.run(board_update, feed_dict={board: initial_board_values})[0] 

    def game_of_life(*args): 
     A = sess.run(board_update, feed_dict={board: X})[0] 
     plot.set_array(A) 
     return plot, 

    ani = animation.FuncAnimation(fig, game_of_life, interval=100, blit=False) 

    plot = plt.imshow(X, cmap='Greys', interpolation='nearest') 
    plt.show() 

回答

1

当您显示图像时,显示的不是动画而是静态图像。您需要删除这条线,在本教程中指出:

plot = plt.imshow(X, cmap='Greys', interpolation='nearest') 

Hint: you will need to remove the plt.show() from the earlier code to make this run!

希望帮助!