错误信息
当我在练习theano官方例程时,遇到的一个错误。
根据报错信息,可以判断出在代码执行pydotprint函数时需要依赖pydot和graphviz的python模块。但是,我使用pip list查看,发现已经安装了pydot和graphviz的程序包。单独执行“import pydot”时也没有报错。这让我很困惑。
分析错误
于是,我开始在网上google错误信息。在github的一个issue中,我找到了线索。虽然之前安装了graphviz的python 模块,但是此模块只是一个python接口,其核心库和程序并没有随着一起安装,需要从Graphviz的网站上下载对应的安装文件安装,这在graphviz模块所在的pypi上也有说明,只是之前被忽略了。
To render the generated DOT source code, you also need to install Graphviz.
Make sure that the directory containing the dot executable is on your systems’ path.
解决方案
于是总结解决方案如下:
1. 安装c编译的Graphviz,并把bin文件夹所在的目录添加到系统环境变量PATH中
2. 使用pip安装pydot和graphviz
3. 验证pydot是否能够链接Graphviz的二进制文件
import pydot
print pydot.find_graphviz()
如果链接成功,则会打印类似如下的结果
绘制Theano Graph
该错误解决后就可以可视化theano的graph了。
执行如下的toy code:
import theano
a = theano.tensor.vector()
out = a + a**10
f = theano.function([a], out)
theano.printing.pydotprint(f, outfile = “f_optimized.png”, var_with_name_simple = True)
然后就可得到打印出的graph了。