上一篇我介绍了Tensorflow中常用的控制流程操作。这一篇我会说一说用Python来构建原型内核和常用可视化方法。
我们都知道Python效率是很低的,为了提高计算的效率,Tensorflow中的内核操作完全是用C 编写的。但是用C 编写Tensorflow内核是一件非常痛苦的事情。所以我们在花费数小时来实现内核之前,首先应该尽快进行Python的原型设计,虽然这效率不高,但是这会提高编写C 版本Tensorflow内核效率。
1、用Python构建原型内核
前面我说过如何使用tf.py_func(),它是可以将任何一段Python代码转换为Tensorflow操作。现在我们在Tensorflow中将一个简单的ReLU非线性内核实现为Python操作,代码实现如下。
当然上述实现的效率是非常低效的,只对原型有用。因为Python代码是不可以并行化,并且不能在GPU上运行。如果我们尝试新的想法,一旦用Python验证工作了,我们肯定会迫不及待地把它写成一个C 内核版本。
2、Tensorflow高级可视化
在实践中,我们通常使用Python ops在Tensorboard上进行可视化。例如我们在构建图像分类模型时,希望在训练期间可视化模型预测的情况。Tensorflow允许用tf.summary.image()函数可视化图像。
但是上述实现只能将输入图像可视化。为了可视化预测,必须找到一种方法向图像添加注释,而现有操作几乎不可能。最简单的方法是在Python中执行绘图,并将其包装在Python操作中。