用 TensorFlow 做一个小动画

感觉 Caffe 已经很久没有大动作了,一年一个贺岁 RC 确实没有太大意思,而且依赖太多太多,而且要不停地转化 “conf 思维” 和 “code” 思维。最关键的,没有 GPU 的我,实在无法忍受单线程来跑训练。

既然是一张白纸,那就从 TensorFlow 入手吧。

在迷迷糊糊看完了官方 Tutorial 之后更加迷茫了:怎么练习?找了好久,发现了这个小练习:__Conway‘€™s Game of Life __

Conway’€™s Game of Life

棋盘上的每一个格子都是一个细胞。细胞有两种状态:活着(1)和死了(0)。初始状态下,这些细胞的状态是随机的。之后的每一步,这些细胞都会按照如下规则来决定它们的状态:

  1. 一个活细胞周围有 0-1 个活细胞,那么它会死去
  2. 一个活细胞周围有 2-3 个活细胞,那么它继续存活
  3. 一个活细胞周围有 4 个活细胞,那么它会死去。
  4. 一个死细胞周围有 3 个活细胞,那么它会复活。

下面,我们来用 TensorFlow 实现一下这个过程。

实现

首先,我们定义棋盘的大小,并说明如何初始化棋盘:

这里我们使用 board 来做棋盘。

然后,我们来实现细胞们的更新:

里面的公式 (N == 3) | (X & (N == 2)) 的证明可以看 这里。我们使用一个卷积来更新所有细胞状态。tf.py_func 其实可以看做一个 lambda 函数。

最后,我们启动这个图,让细胞们 “动起来”:

原文 里面通过使用 matplotlib.animation.FuncAnimation,可以使所有结果都通过同一个 fig 进行展现,我看了好久没有看懂这个函数的 使用说明,就使用了最暴力的办法。

效果

效果

或者 点击这里查看视频

发表评论

电子邮件地址不会被公开。 必填项已用*标注