TensorFlow vs Theano - TensorFlow与PyTorch一起,是目前最著名和最广泛使用的机器学习框架。然而,工具的选择绝不应该取决于自己的喜好,而是应该适应要检查的数据。特别是在大数据领域,这可以防止性能的决定性损失。因此,除了顶级的框架和库之外,也值得关注其他的框架和库。
Theano就是这样一个开源的Python库。在下面的文章中,我们将介绍这两种工具,并解释其区别。
什么是Tensorflow?
开源框架TensorFlow是谷歌第一个深度学习工具DistBelief的直接继承者,主要也构成了语言和图像处理任务环境下的神经网络的基础。通过TensorFlow,可以开发和处理自己的模型,但也可以访问预训练的模型。TF在各种平台上运行,用Python和C++实现。

TensorFlow工具包的层次结构
TF为CPU、GPU或TPU提供低级别的API。通过这种方式,硬件资源可以通过动态分配来最佳地适应进程。
除了低级别的API,还有各种高级别的API,如Keras,是最著名和最经常使用的一种。如果你想了解更多关于Keras的信息,请查看我们关于该主题的文章
。
框架架构
主要来说,TensorFlow框架可以分为训练所需的组件,其中模型准备在现场使用,以及最终部署,例如在移动和物联网设备上使用。 TensorFlowLite.为了简化训练,TensorFlow为开发者提供了一些有用的服务,除了已经提到的动态分配。例如,一个 预制估算器提供了一个完整模型的高层表示。 TensorFlow Hub一种存储库,即使是训练好的机器学习模型也可以被其他语言绑定访问。

TensorFlow vs Theano - TensorFlow框架的结构
TensorBoard和StoredModels服务作为训练和部署之间的连接元素。 张量板(TensorBoard是TensorFlow的可视化工具包,通过它可以将实验结果可视化。所以在这里,它更像是一个人机界面的监控解决方案。有了这个工具 存储的模型部署服务和训练服务都可以共享模型。因此,这个服务形成了一种中介,但包含一个完整的TensorFlow程序,包括所有的权重和计算。
TensorFlow - 数据结构
神经网络是由有向无周期图表示的。这些图的表示和计算可以超越计算机的训练极限。一个图基本上由边连接的节点组成。节点相互连接的程度通常也决定了学习程序,从而决定了人工神经网络的结构。
各个计算步骤的输入和输出代表多维数据阵列,即所谓的张量。

张量原理
张量这一数学术语对应于向量和矩阵的概括。因此,它是一种用于数据表示和处理的基本数据结构。在TensorFlow中,实现为多维数组。因此,一个向量对应于一个一维的张量。
额外的维度可以被添加到张量中,直至无穷大。常见的张量类型是时间序列的3维张量,图像通常是4维的,而视频是5维的张量。

张量和神经网络
TensorFlow方法操纵张量进行线性代数操作。通过将张量对象移动到显卡内存或张量优化的TPU,这些过程可以以高性能执行。
TensorFlow - 训练
训练本身是这样进行的:训练数据被迭代地输入计算机,同时图中的权重也被改变。然后,输出被近似为目标输出值。为此,可以使用单独的测试数据来定期验证训练对任意或不同的输入数据是否有效。

训练程序
Theano - 老而弥坚
Theano是一个用于机器学习和神经网络编程的开源Python库,以及用于数学表达式计算的编译器。它早在 2007年由蒙特利尔大学的蒙特利尔学习算法研究所(MILA)发布。
它特别适用于涉及多维数组的数学表达式的定义、优化和评估。为此,Theano访问了NumPy程序库,用于处理矩阵、大型多维数组和矢量。首先,阅读我们关于NumPy的文章。这里我们向你介绍这个初级的Python库,并解释它的基本数据管理。
数学表达式在Theano中使用类似NumPy的语法进行编程和符号化。
计算指令是用C++或CUDA代码完成的,因此非常接近机器,相应地在CPU或图形处理单元(GPU)上非常高效。
Theano也可以像TensorFlow一样被用作框架Keras的后端。因此,Keras形成了两种技术的交集。
图形结构
与TensorFlow不同,Theano专注于支持符号矩阵表达式,而不是将张量作为一种基本数据类型。虽然支持所有种类的Python对象,但基本的张量功能可用于Theano,但这些操作没有像TensorFlow那样优化。
Theano执行的符号数学计算是以图的形式执行的。这些图是由相互连接的Apply、Variable和Op节点组成。

TensorFlow与Theano--Theano图的结构概述
Op节点代表一个特定类型的输入的特定计算,产生一个特定类型的输出。因此,它对应于一个计算的定义。
位于中心位置的Apply节点代表一个Op对某些变量的应用,也就是对当前数据的计算应用,并被用来表示一个计算图。每个运算都负责知道如何从输入列表中建立一个Apply节点,从而决定了决定了函数和转换。
一个Apply节点另外由输入或输出字段组成。输入代表函数的参数,而输出代表函数的返回值。
该应用节点然后在图中通过它们的输入和输出字段分别引用它们的输入和输出变量,即主要数据结构。 这些 变量节点 是由各种字段定义的。变量类型,所有者,可以是无,也可以是变量是输出的应用节点,索引和变量名称。
TensorFlow vs Theano
总而言之,两种技术都有其优点和缺点。但两者都有其存在的理由。在这里,数据集也提供了工具。
特别是当涉及到张量处理时,如图像处理和声音识别,具有优化操作的TensorFlow应该是第一选择。谷歌解决方案的另一个基于张量的替代品是来自Facebook的PyTorch。
尽管年代久远,Theano是一个高性能和现代的矩阵表达式计算的替代方案。