无论是macOS、Linux,还是微软的Windows操作系统,系统和应用程序主要都使用64位内存寻址方式。但是,如果想要使用GPU加速评估数学表达式,我们依然依赖于32位的内存寻址方式。这是目前Theano唯一支持的计算架构。本节中,我们将学习如何合理地配置Theano。如果读者对与Theanno配置相关的更多细节感兴趣,请参考在线文档:http://deeplearning.net/software/theano/library/config.html,当实现机器学习算法时,我们主要使用浮点数。默认情况下,NumPy和Theano都使用双精度浮点格式(float64)。不过,当我们在CPU上使用Theano代码开发原型,并将其放到GPU上执行运算时,将浮点数精度在float64(CPU)和float32(GPU)之间来回转换是非常有用的。例如,在Python交互环境下,我们可以执行下面的代码查看Theano中浮点变量的默认设置:
如果读者在安装Theano后未对设置做任何修改,浮点数的默认设置应为64位。不过,我们可以使用下列代码将其在当前Python交互下的设置更改为32位:
请注意,虽然Theano目前在GPU上使用32位浮点类型,但在CPU上64位和32位浮点类型都可以使用。因此,如果读者想要更改全局默认设置,可以在命令行(Bash)终端中修改THEANO_FLAGS变量的值:
此外,也可以将此设置写入特定的Python脚本中,并通过以下方式运行脚本:
至此,我们已经讨论了如何设置浮点数的默认格式,使得Theano在GPU上发挥最大的性能。接下来,我们讨论代码的执行位置在CPU和GPU之间切换的配置选项。执行如下代码,我们可以检查当前使用的是CPU还是GPU:
我的个人建议是默认使用cpu,这样设计原型和调试代码就更加容易。例如,在CPU上,我们可以在命令行终端中以脚本的方式来运行Theano代码:
当我们完成了对程序的编码,并希望尽可能发挥GPU的最大性能来高效运行这些代码时,可以执行如下代码,它无须对原始程序做任何修改:
我们可以在个人的主目录下创建一个.theanorc文件来永久保存这些设置。例如,如果想始终使用32位浮点格式和GPU,可以通过下述命令创建一个包含此设置的.theanorc的文件:
如果读者并未使用macOS或者Linux终端,可以使用自己熟悉的文本编辑器来手工创建一个.theanorc文件,文件内容如下:
现在我们已经知道了如何根据硬件情况对Theano做适当配置,在下一节,我们将讨论如何使用更加复杂的阵列结构。