去年11月,TensorFlow庆祝了它的第三个生日。多年来,它成为最受欢迎的ML 框架之一,并拥有了大量的粉丝。
谷歌将这个框架融入Java,C ++,JavaScript,最重要的是融入主要的数据科学语言Python。如果问社区他们最喜欢的工具组合,最常见的答案是TensorFlow和Python。现在版本更新了 - TensorFlow 2.0华丽出场。现在让从头来认识新版本的TensorFlow 2.0。不要怕,新版本比以前更容易了。
通常,机器学习和深度学习中的许多概念可以使用多维矩阵 - 张量来抽象。在数学中,张量被描述为描述其他几何对象之间的线性关系的几何对象。为了简化所有概念,可以将张量视为多维数据阵列,即。矩阵。当我们像n维数组一样观察它们时,我们可以轻松有效地应用矩阵运算。这就是TensorFlow实际上在做的事情。在这个框架中,张量是一个原始单位,我们可以用它们做各种操作。例如,看看下面的代码:
上面代码片段的输出如下所示:
tf.Tensor([[4 6 8] [4 6 8]],shape =(2,3),dtype = int32)
如您所见,我们已经定义了两个常量,我们将另一个值添加到另一个。结果,我们得到了一个Tensor 对象,其中包含了添加的结果。此外,我们可以看到输出的形状及其数据类型。如果您熟悉TensorFlow 1.0,您会注意到更笨不用创建会话,就可以直接运行此代码。当然,这只是使用新版TensorFlow的好处之一。
安装TensorFlow2.0
TensorFlow为各种语言提供API,可用于不同的操作系统。TensorFlow仅适用于Python 3.5及更高版本,因此请确保在系统上安装了正确版本的Python。在本文中,我们使用Python 3.7。对于其他操作系统和语言,您可以查看官方安装指南。
安装TensorFlow有两种安装选项:
· 具有CPU支持的TensorFlow
· 支持GPU的 TensorFlow
如果您的系统拥有NVIDIA®GPU,那么你可以安装TensorFlow与GPU的支持。当然,GPU版本更快,但CPU更易于安装和配置。
如果您使用的是 Anaconda,可以按照以下步骤安装TensorFlow。首先,您需要通过运行命令来创建conda 环境 " tensorflow ":
conda create -n tensorflow pip python = 3.7
很酷,现在我们安装了TensorFlow。让我们看一下TensorFlow 2.0带来的一些很酷的东西,让我们用它来解决一些问题。
Keras - 高级API
Keras是TensorFlow的默认高级API 。在本文中,我们将使用此API构建一个简单的神经网络,所以让我们来探索下它的功能。根据问题的类型,我们可以为我们想要构建的神经网络使用各种层。从本质上讲,Keras提供了不同类型的层(tensorflow.keras.layers),我们需要将它们连接成一个有意义的图形来解决我们的问题。在构建深度学习模型时,我们可以通过以下几种方式来执行此API:
· 使用Sequential类
· 使用Functional API
· 模型子类化
第一种方法是最简单的方法。我们正在使用Sequential类,它实际上是图层的占位符,我们按照我们想要的顺序添加图层。可以类比我们大脑的一层层的神经网络。当我们想以尽可能最快的方式构建神经网络时,我们可能想要选择这种方法。我们也可以选择许多类型的Keras层。最基本的和我们将在本文中使用的那个叫做Dense。它有许多选项可用于设置输入,激活功能等。除了Dense之外, Keras API还为卷积神经网络,递归神经网络提供了不同类型的层等等。这超出了本文的范围。那么,让我们看看如何使用Sequential 和 Dense构建神经网络。
首先,我们导入Sequential 和 Dense。之后,我们创建了一个Sequential类的对象。然后我们使用函数add 和 Dense 类将第一层添加到神经网络。Dense 构造函数中的第一个参数 用于定义该层中的多个神经元。这个层的具体内容是我们使用了 input_dim 参数。通过这样做,我们在input_dim参数中定义了神经元的数量,为我们的网络添加了额外的输入层 。基本上,通过这一次调用,我们添加了两个层。第一个是具有两个神经元的输入层,第二个是具有三个神经元的隐藏层。
您可能会注意到,另一个重要参数是 激活 参数。使用此参数,我们 为特定层中的所有神经元定义 。这里我们使用 'relu' 值,表示该层中的神经元将使用 整流器激活功能。最后,我们 再次调用 Sequential对象的add 方法 并添加另一个层。因为我们没有使用 input_dim 参数,所以会添加一个图层,因为它是我们添加到神经网络的最后一层,它也将是网络的输出层。
功能方法类似,但更灵活。这很容易理解,我们可能希望在构建具有大量操作的复杂模型时选择此方法。以下是使用功能API时上面的相同网络的样子:
好了,带大家认识了最新TensorFlow的特点,和内置的keras的功能用法。先到这里,下面会用TensorFlow来做一个分类实践,请不要走开,关注我们。