上述代码被转换为可重构并转换为机器可执行形式的数据结构。将代码转换为用户可见的数据结构允许我们编写的程序被重写以便更有效的执行或允许计算导数,从而可以使用高级优化器。 这个数据结构实际上并没有在我们上面提到的程序中执行。因此,在我们实际尝试运行之前,TensorFlow有可能将数据结构重写成更高效的代码。这可能涉及到,我们认为的,要求电脑做的事情的小型或大型的结构化。它还可能涉及生成我们正在使用的机器的CPU的、或者我们正使用的集群的,或者我们已备好的任何GPU的实际可执行代码。 这个很酷的事情就是,我们可以编写非常简单的程序能够得到非常惊奇的结果。 但这仅仅是个开始。 做一些有用的东西(但要与众不同) TensorFlow和系统类似之处在于,它们都是关于采用描述机器学习架构(如深度神经网络)的程序,并调整该架构的参数从而最小化某种误差值。它们不仅通过创建代表我们的程序的数据结构来实现,而且还产生一个数据结构,表示相对于我们模型的所有参数的误差值的梯度。而具有这样的梯度函数使得优化变得更加容易。 你可以使用TensorFlow也可以使用Caffe,或者使用其他任何具有基本相同效果的系统编写程序,但是你编写的程序不需要优化机器学习功能。你可以编写优化各种程序的程序,如果你编写的程序使用的是你选择的程序包提供的张量符号。自动差异化和最先进的优化器以及汇编到高效的GPU代码仍然会对你有所帮助。 作为一个简易有效的示例,下图显示了家庭能源使用情况的简单模型。 家庭(圆圈)使用的日常能源作为水平轴上温度函数图。能源使用的分段线性模型已经叠加在使用数据上。模型的参数通常是一个矩阵,但是当我们谈论一百万个模型时,我们可以使用张量。 这个图表显示了一个家庭的能源消耗和一个用量消耗模型。要得到一个单一的模型不是什么大不了的事情,但是要找到这个模型,我必须编写一些真正的代码,然后该代码必须运行在数以百万计的家庭中以获取每个模型。使用TensorFlow,我们可以立即为所有房屋创建模型,我们可以使用比我原来使用的更高效的优化器来获取此模型。结果是一万个模型被一次性优化,效率高于我原来的程序。理论上来说,我可以手工优化我的代码,并且可以手工导出一个派生函数,但是这么做需要时间,更重要的是,atv,调试结果所需的时间使我在做模型时不可能完成。 这样的示例显示了基于张量的计算系统,如TensorFlow(或Caffe或Theano或Mxnet或任何你最喜欢的)是如何用于与深度学习非常不同的优化问题中的。 最好的机器学习软件(对你来说)最好是根本不要使用机器学习。 编译自:KDnuggets Home 作者:Ted Dunning,MapR Technologies的首席应用架构师。目前担任Apache基金会董事会成员,担任大量项目的导师。他开发了用于估计极限分位数的t-digest算法。 文章做了不改变原意的修改 (责任编辑:本港台直播) |