TensorFlow是一个开源的端到端机器学习平台,它整合了数据流图和可微分编程,以应对深度神经网络训练和推理等多样化任务。这个平台使得开发者能够利用多种工具、库和开源资源来构建机器学习应用。
TensorFlow最初并非为深度学习而设计,而是为了处理大量的数值计算。然而,由于其在深度学习开发中展现出的价值,谷歌将其开源。TensorFlow接受的数据形式为张量,即具有更多维度的多维数组。
在处理海量数据时,多维数组显得尤为重要。TensorFlow的代码在分布式计算环境中,特别是在使用GPU的情况下,由于其执行机制以图的形式存在,因此执行起来相对容易。
几年前,当面对大量数据时,深度学习超越了其他所有机器学习算法。谷歌意识到,通过使用深度神经网络可以提升其服务,包括搜索引擎、Gmail和照片服务。因此,谷歌创建了TensorFlow框架,以便研究人员和开发者能够协作开发AI模型。该框架自2015年底首次发布,2017年发布了第一个稳定版本,并且是免费且开源的,得益于Apache开源许可证,用户可以无需支付费用给谷歌就能使用、修改和重新分发更新后的版本。
TensorFlow的名字来源于其构建的基础——张量框架。在TensorFlow中,所有计算都使用张量进行。任何数据都可以用张量来表示,张量是一个n维向量或矩阵。张量的值都是相同数据类型的,并且具有已知(或部分已知)的形状。数据的形状由矩阵或数组的维度决定。
张量可以是计算的输入或输出数据。TensorFlow在其所有操作中都使用图的形式进行。图由一系列顺序计算组成,每个操作称为一个操作节点(op node),并且它们都是相互连接的。图显示了节点之间的动作和关系,但并不显示值。节点的边缘是填充操作数据的一种方式。
TensorFlow允许设计数据流图和结构,通过接收输入作为多维数组(称为张量)来指定数据如何在图中流动。它使能够创建一个操作流程图,这些操作可以在这些输入和输出上执行。
这得益于TensorFlow是用Python编写的,Python易于学习和使用,并且提供了简单的方式来指定高级抽象应该如何连接。TensorFlow的节点和张量是Python对象,TensorFlow应用程序也是如此。然而,Python并不执行数学运算。TensorFlow包含了作为高性能C++二进制文件编写的转换库,Python通过在它们之间路由数据并提供高级编程抽象来连接组件。
TensorFlow的架构分为三个部分:准备数据、创建模型以及通过训练和评估来准备模型。TensorFlow的名字来源于其基本理念,即以多维数组的形式接收输入,可以创建一个流程图(称为图)来运行想要的过程,数据从一端输入,从另一端输出。
TensorFlow 1.10包括一个内置的API,用于:
tf.estimator 用于线性回归,LinearRegressor
分类:tf.estimator,LinearClassifier
tf.estimator.DNNClassifier 用于深度学习分类
Wipe和深度学习:tf.estimator DNNLinearCombinedClassifier
tf. Estimator(booster树回归)。
BoostedTreesRegressor
TensorFlow可以被认为是一个机器学习框架,它与其他框架如PyTorch、CNTK和MXNet竞争。这些框架服务于许多相同的目标,已经在下面的表格中突出了它们相对于TensorFlow的优势和不足。
PyTorch在许多方面与TensorFlow相似,除了用Python编写外:许多基本组件已经包括在内,以及硬件加速组件在底层,一个高度交互的开发模型,允许边设计边工作。
CNTK,或微软认知工具包,采用图结构来表示数据流,类似于TensorFlow,但专注于深度学习神经网络。许多神经网络工作使用CNTK处理得更快。
亚马逊采用Apache MXNet作为AWS上领先的深度学习框架。
TensorFlow提供了C++和Python的API。在这些库开发之前,机器学习和深度学习的编码过程要复杂得多。要创建一个神经网络,设置一个神经元,或编程一个神经元,这个库提供了一个高级API,消除了复杂编码的需要。所有上述任务都由库完成。TensorFlow还提供了Java和R的集成。
TensorFlow显示与CPU和GPU的兼容性。深度学习应用非常复杂,训练过程需要大量的计算。由于数据量大,需要很长时间,涉及多个迭代过程,数学计算,矩阵乘法等步骤。
设置TensorFlow
import tensorflow as tf
print("TensorFlow version:", tf.__version__)
加载数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
构建机器学习模型
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
训练和评估模型
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
概率模型
probability_model = tf.keras.Sequential([
model,
tf.keras.layers.Softmax()
])
在这篇关于TensorFlow在深度学习中的文章中,介绍了TensorFlow模块在Python中的基本介绍,TensorFlow的历史总结,以及与TensorFlow相关的其他关键术语,如张量、图等。还介绍了TensorFlow的各个组成部分以及TensorFlow的设计和工作原理。最后,介绍了TensorFlow的基本Python实现。