提交 cf7171c7 编写于 作者: W wizardforcel

2020-08-06 11:06:29

上级 db891703
......@@ -933,7 +933,7 @@ Else If the GPU is not present
then the node is placed on the CPU
```
# 动态展示
# 动态展示
`tf.device()`也可以传递函数名而不是设备字符串。在这种情况下,该函数必须返回设备字符串。此函数允许使用复杂的算法将变量放在不同的设备上。例如,TensorFlow 在`tf.train.replica_device_setter()`中提供循环设备设置器,我们将在下一节中讨论。
......@@ -1013,7 +1013,7 @@ print('output : ',output)
TensorBoard 可视化计算图结构,提供统计分析并绘制在计算图执行期间作为摘要捕获的值。让我们看看它在实践中是如何运作的。
# TensorBoard 最小的例子
# TensorBoard 最小示例
1. 通过定义线性模型的变量和占位符来实现:
......
......@@ -42,7 +42,7 @@ Keras 中的神经网络模型将定义为层图。 Keras 中的模型可以使
因此,根据经验,我们已经看到工程师将顺序 API 用于从简单层构建的简单模型,以及用于涉及分支和共享层的复杂模型的函数式 API。我们还观察到,使用函数式 API 构建简单模型可以更轻松地将模型扩展为具有分支和共享的复杂模型。因此,对于我们的工作,我们总是使用函数式 API。
# 在 Keras 建立模型的工作流程
# 在 Keras 中创建模型的工作流程
Keras 的简单工作流程如下:
......@@ -231,7 +231,7 @@ Keras 核心层实现基本操作,几乎用于各种网络架构。下表给
上一节中提到的所有层都需要添加到我们之前创建的模型中。在以下部分中,我们将介绍如何使用函数式 API 和顺序 API 添加层。
# 用于将层添加到 Keras 模型的顺序 API
# 用于向 Keras 模型添加层的顺序 API
在顺序 API 中,可以通过实例化前面部分中给出的某个层类型的对象来创建层。然后使用`model.add()`函数将创建的层添加到模型中。作为示例,我们将创建一个模型,然后为其添加两个层:
......
# 四、使用 TensorFlow 的经典机器学习
# 四、TensorFlow 中的经典机器学习
机器学习是计算机科学领域,涉及算法的研究,开发和应用,以使计算机器从数据中学习。计算机学习的模型用于进行预测和预测。机器学习研究人员和工程师通过构建模型然后使用这些模型进行预测来实现这一目标。现在众所周知,机器学习已成功地应用于各种领域,如自然语言理解,视频处理,图像识别,语音和视觉。
......@@ -665,7 +665,7 @@ For test data : MSE = 30.64861488, R2 = 0.63979971
![](img/c8314797-8170-4325-b9ac-d563348c0609.png)
# 使用逻辑回归进行分类
# 使用逻辑回归分类
最常用的分类方法是使用逻辑回归。逻辑回归是概率和线性分类器。输入是特征向量,特定类的成员的概率可以正式写成如下等式:
......
# 五、使用 TensorFlow 和 Keras 的神经网络和 MLP
# 五、TensorFlow 和 Keras 中的神经网络和 MLP
神经网络是一种受大脑结构和功能启发的建模技术。正如大脑包含数百万个被称为神经元的微小互连单元一样,今天的神经网络由数百万个分层排列的微小互连计算单元组成。由于神经网络的计算单元仅存在于数字世界中,与大脑的物理神经元相反,它们也被称为人工神经元。类似地,神经网络(NN)也称为人工神经网络(ANN)。
......@@ -88,7 +88,7 @@ MNIST 数据集包含从 0 到 9 的手写数字的`28x28`像素图像,以及
让我们从纯 TensorFlow 方法开始。
# 用于 MNIST 分类的基于 TensorFlow 的 MLP
# TensorFlow 中的用于 MNIST 分类的 MLP
首先,加载 MNIST 数据集,并使用以下代码定义训练和测试特征以及目标:
......@@ -402,7 +402,7 @@ accuracy=0.85720009
因此,通过在每层添加两行和 256 个神经元,我们将精度提高到 0.936。我们鼓励您尝试使用不同变量值的代码来观察它如何影响损失和准确率。
# 用于 MNIST 分类的基于 Keras 的 MLP
# Keras 中的用于 MNIST 分类的 MLP
现在让我们与 Keras 建立相同的 MLP 网络,Keras 是 TensorFlow 的高级库。我们保留所有参数与本章中用于 TensorFlow 示例的参数相同,例如,隐藏层的激活函数保留为 ReLU 函数。
......@@ -537,7 +537,7 @@ Test accuracy: 0.9727
笔记本`ch-05_MLP`中提供了使用 Keras 进行 MNIST 分类的 MLP 的完整代码。
# 用于 MNIST 分类的基于 TFLearn 的 MLP
# TFLearn 中的用于 MNIST 分类的 MLP
现在让我们看看如何使用 TFLearn 实现相同的 MLP,TFLearn 是 TensorFlow 的另一个高级库:
......@@ -618,7 +618,7 @@ Test accuracy: 0.9637
在笔记本`ch-05_MLP`中提供了使用 TFLearn 进行 MNIST 分类的 MLP 的完整代码。
# 使用 TensorFlow,Keras 和 TFLearn 的 MLP 摘要
# TensorFlow,Keras 和 TFLearn 中的 MLP 总结
在前面的部分中,我们学习了如何使用 TensorFLow 及其高级库构建简单的 MLP 架构。纯 TensorFlow 的准确率约为 0.93-0.94,Keras 的准确率为 0.96-0.98,TFLearn 的准确率为 0.96-0.97。尽管我们的代码的所有示例都使用下面的 TensorFlow,但相同体系结构和参数的准确率差异可归因于这样的事实:尽管我们初始化了一些重要的超参数,但高级库和 TensorFlow 却抽象了许多其他超级 - 我们没有从默认值修改的参数。
......
# 六、使用 TensorFlow 和 Keras 的 RNN
# 六、TensorFlow 和 Keras 中的 RNN
在涉及有序数据序列的问题中,例如**时间序列预测****自然语言处理**,上下文对于预测输出非常有价值。可以通过摄取整个序列而不仅仅是最后一个数据点来确定这些问题的上下文。因此,先前的输出成为当前输入的一部分,并且当重复时,最后的输出结果是所有先前输入的结果以及最后一个输入。 **循环神经网络****RNN**)架构是用于处理涉及序列的机器学习问题的解决方案。
......@@ -254,7 +254,7 @@ TensorFlow 还提供包装其他单元类的类:
有关 TensorFlow 中 RNN 的最新文档,[请访问此链接](https://www.tensorflow.org/api_guides/python/contrib.rnn)
# 适用于 RNN 的 Keras
# Keras 中的 RNN
与 TensorFlow 相比,在 Keras 中创建 RNN 要容易得多。正如您在第 3 章中学到的,Keras 提供了用于创建循环网络的函数式和顺序 API。要构建 RNN 模型,您必须从`kera.layers.recurrent`模块添加层。 Keras 在`keras.layers.recurrent`模块中提供以下类型的循环层:
......@@ -289,7 +289,7 @@ RNN 更频繁使用的一些应用领域如下:
<https://r2rt.com/written-memories-understanding-deriving-and-extending-the-lstm.html>
# 用于 MNIST 数据的 Keras 中的 RNN
# Keras 中的用于 MNIST 数据的 RNN
虽然 RNN 主要用于序列数据,但它也可用于图像数据。我们知道图像具有最小的两个维度 - 高度和宽度。现在将其中一个维度视为时间步长,将其他维度视为特征。对于 MNIST,图像大小为`28 x 28`像素,因此我们可以将 MNIST 图像视为具有 28 个时间步长,每个时间步长具有 28 个特征。
......
# 七、使用 TensorFlow 和 Keras 的时间序列数据和 RNN
# 七、TensorFlow 和 Keras 中的用于时间序列数据的 RNN
时间序列数据是一系列值,以不同的时间间隔记录或测量。作为序列,RNN 架构是从这些数据训练模型的最佳方法。在本章中,我们将使用示例时间序列数据集来展示如何使用 TensorFlow 和 Keras 构建 RNN 模型。
......@@ -63,7 +63,7 @@ plt.show()
![](img/305f4a94-92a4-4164-9ec2-473cc7225413.png)Airline Passengers Dataset
# 使用 TensorFlow RNN 模型预处理数据集
# TensorFlow RNN 模型预处理数据集
为了使其为学习模型做好准备,通过应用 MinMax 缩放来正则化数据集,该缩放使数据集值介于 0 和 1 之间。您可以尝试根据数据的性质对数据应用不同的缩放方法。
......@@ -330,7 +330,7 @@ test rmse = 0.11961434334066987
对于下一节,您可以按照 Jupyter 笔记本中的代码`ch-07b_RNN_TimeSeries_Keras`
# 使用 Keras RNN 模型预处理数据集
# Keras RNN 模型预处理数据集
与使用较低级别 TensorFlow 类和方法构建相比,在 Keras 中构建 RNN 网络要简单得多。对于 Keras,我们预先处理数据,如前面部分所述,以获得受监督的机器学习时间序列数据集:`X_train, Y_train, X_test, Y_test`
......@@ -356,7 +356,7 @@ X_train = X_train.reshape(X_train.shape[0], X_train.shape[1],1)
X_test = X_test.reshape(X_test.shape[0], X_train.shape[1], 1)
```
# 使用 Keras 的简单 RNN
# Keras 中的简单 RNN
通过添加具有内部神经元数量和输入张量形状的`SimpleRNN`层,可以在 Keras 中轻松构建 RNN 模型,不包括样本维数。以下代码创建,编译和拟合`SimpleRNN`
......@@ -459,7 +459,7 @@ Test Score: 54.13 RMSE
我们可以看到,这不像我们在 TensorFlow 部分得到的那样完美;但是,这种差异是因为超参数值。我们留给您尝试不同的超参数值来调整此 Keras 模型以获得更好的结果。
# 使用 Keras 的 LSTM
# Keras 中的 LSTM
创建 LSTM 模型只需添加 LSTM 层而不是`SimpleRNN`层,如下所示:
......@@ -494,7 +494,7 @@ Test Score: 84.68 RMSE
![](img/b64ddef8-5b68-44b8-842e-779177ef1557.png)
# 使用 Keras 的 GRU
# Keras 中的 GRU
使用 TensorFlow 和 Keras 的一个优点是它们可以轻松创建模型。与 LSTM 一样,创建 GRU 模型只需添加 GRU 层而不是 LSTM 或`SimpleRNN`层,如下所示:
......
# 八、使用 TensorFlow 和 Keras 的文本数据和 RNN
# 八、TensorFlow 和 Keras 中的用于文本数据的 RNN
文本数据可以被视为一系列字符,单词,句子或段落。 **循环神经网络****RNN**)已被证明是非常有用的序列神经网络结构。为了将神经网络模型应用于**自然语言处理****NLP**)任务,文本被视为单词序列。事实证明,这对于 NLP 任务非常成功,例如:
......@@ -286,7 +286,7 @@ valid: [64 58 59 4 69 53 31 77]
我们将使用此验证集通过打印五个最接近的单词来演示嵌入一词的结果。
# 使用 TensorFlow 的 SkipGram 模型
# TensorFlow 中的 SkipGram 模型
现在我们已经准备好了训练和验证数据,让我们在 TensorFlow 中创建一个 SkipGram 模型。
......@@ -542,7 +542,7 @@ Similar to is: was, are, has, being, busan,
Similar to no: any, only, the, another, trinomial,
```
# 使用 t-SNE 可视化单词嵌入
# t-SNE 的单词嵌入可视化
让我们可视化我们在上一节中生成的单词嵌入。 t-SNE 是在二维空间中显示高维数据的最流行的方法。我们将使用 scikit-learn 库中的方法,并重用 TensorFlow 文档中给出的代码,来绘制我们刚学过的词嵌入的图形。
......@@ -590,7 +590,7 @@ plot_with_labels(low_dim_embeddings, labels)
![](img/652fb621-e9a3-48bb-8270-ee1073f69df3.png)t-SNE visualization of embeddings for text8 data set
# keras 的 SkipGram 模型
# Keras 中的 SkipGram 模型
使用 Keras 的嵌入模型的流程与 TensorFlow 保持一致。
......@@ -804,7 +804,7 @@ Similar to trading: rake, rubens, swapo, mlx, nahb,
到目前为止,我们已经看到了如何使用 TensorFlow 及其高级库 Keras 创建单词向量或嵌入。现在让我们看看如何使用 TensorFlow 和 Keras 来学习模型并将模型应用于一些与 NLP 相关的任务的预测。
# 使用 TensorFlow 和 Keras 中的 RNN 模型生成文本
# TensorFlow 和 Keras 中的 RNN 模型的文本生成
文本生成是 NLP 中 RNN 模型的主要应用之一。针对文本序列训练 RNN 模型,然后通过提供种子文本作为输入来生成文本序列。让我们试试 text8 数据集。
......
# 九、使用 TensorFlow 和 Keras 的 CNN
# 九、TensorFlow 和 Keras 中的 CNN
**卷积神经网络****CNN**)是一种特殊的前馈神经网络,在其架构中包含卷积和汇聚层。也称为 ConvNets,CNN 架构的一般模式是按以下顺序包含这些层:
......@@ -116,7 +116,7 @@ tf.nn.conv2d(
卷积层具有每个内核的单独权重和偏差参数。权重参数的数量等于内核中元素的数量,并且只有一个偏差参数。内核的所有连接共享相同的权重和偏差参数。因此在我们的例子中,将有 4 个权重参数和 1 个偏差参数,但如果我们在卷积层中使用 5 个内核,则总共将有`5 x 4`个权重参数和`5 x 1`个偏差参数(每个特征图 4 个权重,1 个偏差)。
# 解池化
# 解池化
通常,在卷积操作中,应用几个不同的内核,这导致生成若干特征映射。因此,卷积运算导致生成大尺寸数据集。
......@@ -194,7 +194,7 @@ Y_train = mnist.train.labels
Y_test = mnist.test.labels
```
# 使用 TensorFlow 的用于 MNIST 的 LeNet CNN
# TensorFlow 中的用于 MNIST 的 LeNet CNN
在 TensorFlow 中,应用以下步骤为 MNIST 数据构建基于 LeNet 的 CNN 模型:
......@@ -365,7 +365,7 @@ Accuracy: 0.9884
现在,与我们在前几章中看到的方法相比,这是一个非常好的准确率。从图像数据中学习 CNN 模型是不是很神奇?
# 使用 Keras 的用于 MNIST 的 LeNet CNN
# Keras 中的用于 MNIST 的 LeNet CNN
让我们重新审视具有相同数据集的相同 LeNet 架构,以在 Keras 中构建和训练 CNN 模型:
......@@ -545,7 +545,7 @@ dataset.scaleX()
加载和预处理的数据在数据集对象变量中可用作`dataset.X_train``dataset.Y_train``dataset.X_test``dataset.Y_test`
# 使用 TensorFlow 的用于 CIFAR10 的卷积网络
# TensorFlow 中的用于 CIFAR10 的卷积网络
我们保持层,滤波器及其大小与之前的 MNIST 示例中的相同,增加了一个正则化层。由于此数据集与 MNIST 相比较复杂,因此我们为正则化目的添加了额外的丢弃层:
......@@ -586,7 +586,7 @@ Accuracy: 0.6361
与我们在 MNIST 数据上获得的准确率相比,我们没有获得良好的准确率。通过调整不同的超参数并改变卷积和池化层的组合,可以实现更好的准确率。我们将其作为挑战,让读者探索并尝试不同的 LeNet 架构和超参数变体,以实现更高的准确率。
# 使用 Keras 的用于 CIFAR10 的卷积网络
# Keras 中的用于 CIFAR10 的卷积网络
让我们在 Keras 重复 LeNet CNN 模型构建和 CIFAR10 数据训练。我们保持架构与前面的示例相同,以便轻松解释概念。在 Keras 中,丢弃层添加如下:
......
# 十、使用 TensorFlow 和 Keras 的自编码器
# 十、TensorFlow 和 Keras 中的自编码器
自编码器是一种神经网络架构,通常与无监督学习,降维和数据压缩相关联。自编码器通过使用隐藏层中较少数量的神经元来学习产生与输入层相同的输出。这允许隐藏层以较少数量的参数学习输入的特征。使用较少数量的神经元来学习输入数据的特征的这个过程反过来减少了输入数据集的维度。
......
......@@ -22,14 +22,14 @@ TensorFlow 模型在开发环境中经过训练和验证。一旦发布,它们
您可以通过以下两种方法之一在 TensorFlow 中保存和恢复模型和变量:
*`tf.train.Saver`类创建的保护程序对象
*`tf.train.Saver`类创建的保存器对象
*`tf.saved_model_builder.SavedModelBuilder`类创建的基于`SavedModel`格式的对象
让我们看看两种方法的实际应用。
您可以按照 Jupyter 笔记本中的代码`ch-11a_Saving_and_Restoring_TF_Models`
# 使用保护程序类保存和恢复所有图变量
# 使用保存器类保存和恢复所有图变量
我们进行如下:
......@@ -122,7 +122,7 @@ Values of variables w,b: [ 0.30000001][-0.30000001]
output=[ 0\. 0.30000001 0.60000002 0.90000004]
```
# 使用保护程序类保存和恢复所选变量
# 使用保存器类保存和恢复所选变量
默认情况下,`Saver()`类将所有变量保存在图中,但您可以通过将变量列表传递给`Saver()`类的构造函数来选择要保存的变量:
......@@ -283,7 +283,7 @@ $ sudo pip2 install tensorflow-serving-api
TF 服务 API 仅适用于 Python 2,但尚不适用于 Python 3。
# 保存 TF 服务的模型
# 为 TF 服务保存模型
为了服务模型,需要先保存它们。在本节中,我们将从官方 TensorFlow 文档中演示 MNIST 示例的略微修改版本,[可从此链接获得](https://www.tensorflow.org/serving/serving_basic)
......@@ -488,7 +488,7 @@ INFO:tensorflow:SavedModel written to: b'/home/armando/models/mnist/1/saved_mode
接下来,我们运行 ModelServer 并提供刚刚保存的模型。
# 提供 TF 服务模型
# 使用 TF 服务提供模型
要运行 ModelServer,请执行以下命令:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册