diff --git a/docs/tf-ml-cookbook-2e-zh/ch02.md b/docs/tf-ml-cookbook-2e-zh/ch02.md index 287999dea4d4c6b7c6bc8066013ec8e6ecf0c500..43f3dabb425ec89f36be9bbac3719440892528de 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch02.md +++ b/docs/tf-ml-cookbook-2e-zh/ch02.md @@ -160,7 +160,7 @@ sess = tf.Session() 我们按如下方式处理秘籍: -1. 首先,我们使用 NumPy 创建示例 2D 图像。该图像将是`4 x 4`像素图像。我们将在四个方面创建它;第一个和最后一个维度的大小为 1。请注意,某些 TensorFlow 图像函数将在四维图像上运行。这四个维度是图像编号,高度,宽度和通道,为了使其成为一个具有一个通道的图像,我们将两个维度设置为`1`,如下所示: +1. 首先,我们使用 NumPy 创建示例 2D 图像。该图像将是`4 x 4`像素图像。我们将在四个方面创建它;第一个和最后一个维度的大小为 1。请注意,某些 TensorFlow 图像函数将在四维图像上运行。这四个维度是图像编号,高度,宽度和通道,为了使其成为一个具有一个通道的图像,我们将两个维度设置为`1`,如下所示: ```py x_shape = [1, 4, 4, 1] @@ -453,7 +453,7 @@ my_output = tf.mul(x_data, A) loss = tf.square(my_output - y_target) ``` -1. 现在,我们必须声明一种优化图中变量的方法。我们声明了一种优化算法。大多数优化算法需要知道每次迭代中的步进距离。该距离由学习率控制。如果我们的学习率太大,我们的算法可能会超过最小值,但如果我们的学习率太小,我们的算法可能需要很长时间才能收敛;这与消失和爆炸的梯度问题有关。学习率对收敛有很大影响,我们将在本节末尾讨论这个问题。虽然我们在这里使用标准梯度下降算法,但是有许多不同的优化算法可以不同地运行,并且可以根据问题做得更好或更差。有关不同优化算法的精彩概述,请参阅 Sebastian Ruder 在本文末尾的另见部分中的文章: +1. 现在,我们必须声明一种优化图中变量的方法。我们声明了一种优化算法。大多数优化算法需要知道每次迭代中的步进距离。该距离由学习率控制。如果我们的学习率太大,我们的算法可能会超过最小值,但如果我们的学习率太小,我们的算法可能需要很长时间才能收敛;这与消失和爆炸的梯度问题有关。学习率对收敛有很大影响,我们将在本节末尾讨论这个问题。虽然我们在这里使用标准梯度下降算法,但是有许多不同的优化算法可以不同地运行,并且可以根据问题做得更好或更差。有关不同优化算法的精彩概述,请参阅 Sebastian Ruder 在本文末尾的另见部分中的文章: ```py my_opt = tf.train.GradientDescentOptimizer(learning_rate=0.02) @@ -855,7 +855,7 @@ plt.show() ![](img/922f9297-3d22-4eff-a854-a613cead1b35.png) -图 7:花瓣宽度与花瓣长度的山鸢尾和其它鸢尾的图;实线是我们在 1000 次迭代后实现的线性分离器 +图 7:花瓣宽度与花瓣长度的山鸢尾和其它鸢尾的图;实线是我们在 1000 次迭代后实现的线性分离器 ## 更多 diff --git a/docs/tf-ml-cookbook-2e-zh/ch03.md b/docs/tf-ml-cookbook-2e-zh/ch03.md index 9db0305a64c860d01ee37010e9da8a346430e510..09752b06034e7f1dbabbf1920a308f28d089b89c 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch03.md +++ b/docs/tf-ml-cookbook-2e-zh/ch03.md @@ -293,7 +293,7 @@ plt.show() ![](img/3d3d7762-7528-4101-bd3b-8175f11e0c83.png) -图 4:用我们的算法拟合数据的 L2 损失;注意损失函数中的抖动,可以通过较大的批量大小减小抖动,或者通过较小的批量大小来增加。 +图 4:用我们的算法拟合数据的 L2 损失;注意损失函数中的抖动,可以通过较大的批量大小减小抖动,或者通过较小的批量大小来增加。 Here is a good place to note how to see whether the model is overfitting or underfitting the data. If our data is broken into test and training sets, and the accuracy is greater on the training set and lower on the test set, then we are overfitting the data. If the accuracy is still increasing on both test and training sets, then the model is underfitting and we should continue training. @@ -407,7 +407,7 @@ plt.show() ![](img/7b0c20a1-43c3-4a07-9785-2f7a5706ad6b.png) -图 8:常规线性回归和戴明回归之间的差异;左边的线性回归最小化了到线的垂直距离,右边的变形回归最小化了到线的总距离 +图 8:常规线性回归和戴明回归之间的差异;左边的线性回归最小化了到线的垂直距离,右边的变形回归最小化了到线的总距离 要实现戴明回归,我们必须修改损失函数。常规线性回归中的损失函数使垂直距离最小化。在这里,我们希望最小化总距离。给定线的斜率和截距,到点的垂直距离是已知的几何公式​​。我们只需要替换此公式并告诉 TensorFlow 将其最小化。 @@ -415,7 +415,7 @@ plt.show() 我们按如下方式处理秘籍: -1. 代码与之前的秘籍非常相似,除非我们进入损失函数。我们首先加载库;开始一个会议;加载数据;声明批量大小;并创建占位符,变量和模型输出,如下所示: +1. 代码与之前的秘籍非常相似,除非我们进入损失函数。我们首先加载库;开始一个会议;加载数据;声明批量大小;并创建占位符,变量和模型输出,如下所示: ```py import matplotlib.pyplot as plt @@ -510,7 +510,7 @@ plt.show() 我们按如下方式处理秘籍: -1. 我们将再次使用鸢尾花数据集并以与以前相同的方式设置我们的脚本。我们先加载库;开始一个会议;加载数据;声明批量大小;并创建占位符,变量和模型输出,如下所示: +1. 我们将再次使用鸢尾花数据集并以与以前相同的方式设置我们的脚本。我们先加载库;开始一个会议;加载数据;声明批量大小;并创建占位符,变量和模型输出,如下所示: ```py import matplotlib.pyplot as plt diff --git a/docs/tf-ml-cookbook-2e-zh/ch04.md b/docs/tf-ml-cookbook-2e-zh/ch04.md index f9feec26234dfba7e55d0d8ac4b01ff75648f963..e16e4279c9e5815519d34b2b35dee3f3ed3f9bc7 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch04.md +++ b/docs/tf-ml-cookbook-2e-zh/ch04.md @@ -126,7 +126,7 @@ prediction = tf.sign(model_output) accuracy = tf.reduce_mean(tf.cast(tf.equal(prediction, y_target), tf.float32)) ``` -1. 在这里,我们将声明我们的优化函数并初始化我们的模型变量;我们在以下代码中执行此操作: +1. 在这里,我们将声明我们的优化函数并初始化我们的模型变量;我们在以下代码中执行此操作: ```py my_opt = tf.train.GradientDescentOptimizer(0.01) @@ -240,7 +240,7 @@ plt.show() ![](img/fb331bce-9d8e-4d8e-928e-8446022dac2c.png) -图 3:迭代测试和训练集精度;我们确实获得 100% 的准确率,因为这两个类是线性可分的 +图 3:迭代测试和训练集精度;我们确实获得 100% 的准确率,因为这两个类是线性可分的 ![](img/adb5aaf5-d575-4e93-a84c-7f709afcdcb6.png) @@ -468,7 +468,7 @@ from sklearn import datasets sess = tf.Session() ``` -1. 现在,我们生成数据。我们将生成的数据将是两个同心数据环;每个戒指都属于不同的阶级。我们必须确保类只有 -1 或 1。然后我们将数据分成每个类的`x`和`y`值以用于绘图目的。为此,请使用以下代码: +1. 现在,我们生成数据。我们将生成的数据将是两个同心数据环;每个戒指都属于不同的阶级。我们必须确保类只有 -1 或 1。然后我们将数据分成每个类的`x`和`y`值以用于绘图目的。为此,请使用以下代码: ```py (x_vals, y_vals) = datasets.make_circles(n_samples=500, factor=.5, noise=.1) diff --git a/docs/tf-ml-cookbook-2e-zh/ch05.md b/docs/tf-ml-cookbook-2e-zh/ch05.md index 52e41e7f012cfbff0d35238beefc64b55d2aa7eb..fe489665ea6ba0caeccad4ae1ce87af84a0d5b53 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch05.md +++ b/docs/tf-ml-cookbook-2e-zh/ch05.md @@ -438,7 +438,7 @@ plt.show() ![](img/5d0b3e2a-6c96-4934-9065-a903836c40e9.png) -图 3:波士顿数据集上预测房屋价值和实际房屋价值的两个直方图;这一次,我们为每个特征不同地缩放了距离函数 +图 3:波士顿数据集上预测房屋价值和实际房屋价值的两个直方图;这一次,我们为每个特征不同地缩放了距离函数 ## 工作原理 diff --git a/docs/tf-ml-cookbook-2e-zh/ch06.md b/docs/tf-ml-cookbook-2e-zh/ch06.md index e7764e08b136e946d63b2099619170cf9e9dde0e..6388e527ebcfb5d6f222625c5a1c4c014afa1d25 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch06.md +++ b/docs/tf-ml-cookbook-2e-zh/ch06.md @@ -316,7 +316,7 @@ plt.show() ## 更多 -在本节中,我们比较了神经网络的 ReLU 激活函数和 Sigmoid 激活函数。还有许多其他激活函数通常用于神经网络,但大多数属于两个类别之一;第一类包含形状类似于 sigmoid 函数的函数,如 arctan,hypertangent,heavyiside step 等;第二类包含形状的函数,例如 ReLU 函数,例如 softplus,leaky ReLU 等。我们在本节中讨论的关于比较这两个函数的大多数内容都适用于任何类别的激活。然而,重要的是要注意激活函数的选择对神经网络的收敛和输出有很大影响。 +在本节中,我们比较了神经网络的 ReLU 激活函数和 Sigmoid 激活函数。还有许多其他激活函数通常用于神经网络,但大多数属于两个类别之一;第一类包含形状类似于 sigmoid 函数的函数,如 arctan,hypertangent,heavyiside step 等;第二类包含形状的函数,例如 ReLU 函数,例如 softplus,leaky ReLU 等。我们在本节中讨论的关于比较这两个函数的大多数内容都适用于任何类别的激活。然而,重要的是要注意激活函数的选择对神经网络的收敛和输出有很大影响。 # 实现单层神经网络 @@ -385,7 +385,7 @@ x_data = tf.placeholder(shape=[None, 3], dtype=tf.float32) y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32) ``` -1. 重要的是要用适当的形状声明我们的模型变量。我们可以将隐藏层的大小声明为我们希望的任何大小;在下面的代码块中,我们将其设置为有五个隐藏节点: +1. 重要的是要用适当的形状声明我们的模型变量。我们可以将隐藏层的大小声明为我们希望的任何大小;在下面的代码块中,我们将其设置为有五个隐藏节点: ```py hidden_layer_nodes = 5 @@ -472,7 +472,7 @@ plt.show() ## 更多 -请注意,通过查看测试和训练集上的`loss`函数,我们可以确定模型何时开始过拟合训练数据。我们还可以看到训练损失并不像测试装置那样平稳。这是因为有两个原因:第一个原因是我们使用的批量小于测试集,尽管不是很多;第二个原因是由于我们正在训练训练组,而测试装置不会影响模型的变量。 +请注意,通过查看测试和训练集上的`loss`函数,我们可以确定模型何时开始过拟合训练数据。我们还可以看到训练损失并不像测试装置那样平稳。这是因为有两个原因:第一个原因是我们使用的批量小于测试集,尽管不是很多;第二个原因是由于我们正在训练训练组,而测试装置不会影响模型的变量。 # 实现不同的层 @@ -1219,7 +1219,7 @@ plt.show() ## 工作原理 -在考虑使用神经网络建模数据时,您必须考虑优缺点。虽然我们的模型比以前的模型融合得更快,并且可能具有更高的准确率,但这需要付出代价;我们正在训练更多的模型变量,并且更有可能过拟合。为了检查是否发生过拟合,我们会查看测试和训练集的准确率。如果训练集的准确率继续增加而测试集的精度保持不变或甚至略微下降,我们可以假设过拟合正在发生。 +在考虑使用神经网络建模数据时,您必须考虑优缺点。虽然我们的模型比以前的模型融合得更快,并且可能具有更高的准确率,但这需要付出代价;我们正在训练更多的模型变量,并且更有可能过拟合。为了检查是否发生过拟合,我们会查看测试和训练集的准确率。如果训练集的准确率继续增加而测试集的精度保持不变或甚至略微下降,我们可以假设过拟合正在发生。 为了对抗欠拟合,我们可以增加模型深度或训练模型以进行更多迭代。为了解决过拟合问题,我们可以为模型添加更多数据或添加正则化技术。 diff --git a/docs/tf-ml-cookbook-2e-zh/ch07.md b/docs/tf-ml-cookbook-2e-zh/ch07.md index c579448db60428066e4dadfb13f252b4f93df837..ad81b2441a34090605ea14ff182526afe24e1482 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch07.md +++ b/docs/tf-ml-cookbook-2e-zh/ch07.md @@ -1363,7 +1363,7 @@ texts = [x for x in texts if len(x.split()) > window_size] assert(len(target)==len(texts)) ``` -1. 现在我们将创建我们的单词字典。请务必注意,我们不必创建文档字典。文件索引只是文件的索引;每个文档都有一个唯一的索引: +1. 现在我们将创建我们的单词字典。请务必注意,我们不必创建文档字典。文件索引只是文件的索引;每个文档都有一个唯一的索引: ```py word_dictionary = text_helpers.build_dictionary(texts, vocabulary_size) diff --git a/docs/tf-ml-cookbook-2e-zh/ch08.md b/docs/tf-ml-cookbook-2e-zh/ch08.md index 41454b800f3fd9700dc031f7ace2e52d0ae5900c..11188f72f1640d7dfa1b6d1f35903a6b3cc7e134 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch08.md +++ b/docs/tf-ml-cookbook-2e-zh/ch08.md @@ -302,7 +302,7 @@ CNN 非常适合图像识别。造成这种情况的部分原因是卷积层创 此外,对于图像识别数据,通常在将图像发送之前随机扰动图像以进行训练。在这里,我们将随机裁剪,翻转和更改亮度。 -此秘籍是官方 TensorFlow CIFAR-10 教程的改编版本,可在本章末尾的“另见”部分中找到。我们将教程浓缩为一个脚本,我们将逐行完成并解释所有必要的代码。我们还将一些常量和参数恢复为原始引用的纸张值;我们将在适当的步骤中标记这一点。 +此秘籍是官方 TensorFlow CIFAR-10 教程的改编版本,可在本章末尾的“另见”部分中找到。我们将教程浓缩为一个脚本,我们将逐行完成并解释所有必要的代码。我们还将一些常量和参数恢复为原始引用的纸张值;我们将在适当的步骤中标记这一点。 ## 操作步骤 @@ -795,7 +795,7 @@ git clone https://github.com/tensorflow/models/tree/master/research/inception ## 工作原理 -关于预训练 CNN 上的训练的官方 TensorFlow 教程需要设置一个文件夹;我们从 CIFAR-10 数据创建的设置。然后我们将数据转换为所需的`TFRecords`格式并开始训练模型。请记住,我们正在微调模型并重新训练顶部的完全连接的层以适合我们的 10 类数据。 +关于预训练 CNN 上的训练的官方 TensorFlow 教程需要设置一个文件夹;我们从 CIFAR-10 数据创建的设置。然后我们将数据转换为所需的`TFRecords`格式并开始训练模型。请记住,我们正在微调模型并重新训练顶部的完全连接的层以适合我们的 10 类数据。 ## 另见 @@ -810,7 +810,7 @@ git clone https://github.com/tensorflow/models/tree/master/research/inception Stylenet 是一个过程,它接收两个图像并将一个图像的样式应用于第二个图像的内容。它基于 2015 年的着名论文“艺术风格的神经算法”(参见下一节的第一个要点)。作者在一些 CNN 中找到了一个属性,其中存在中间层,它们似乎编码图片的样式,有些编码图片的内容。为此,如果我们训练样式图片上的样式层和原始图像上的内容层,并反向传播那些计算的损失,我们可以将原始图像更改为更像样式图像。 -为了实现这一目标,我们将下载本文推荐的网络;叫做 imagenet-vgg-19。还有一个 imagenet-vgg-16 网络也可以使用,但是本文推荐使用 imagenet-vgg-19。 +为了实现这一目标,我们将下载本文推荐的网络;叫做 imagenet-vgg-19。还有一个 imagenet-vgg-16 网络也可以使用,但是本文推荐使用 imagenet-vgg-19。 ## 操作步骤 @@ -838,7 +838,7 @@ from tensorflow.python.framework import ops ops.reset_default_graph() ``` -1. 然后我们可以声明两个图像的位置:原始图像和样式图像。出于我们的目的,我们将使用本书的封面图片作为原始图像;对于风格形象,我们将使用文森特·梵高的星夜。随意使用您想要的任何两张图片。如果您选择使用这些图片,[可以在本书的 GitHub 网站上找到(导航到 Styelnet 部分)](https://github.com/nfmcclure/tensorflow_cookbook): +1. 然后我们可以声明两个图像的位置:原始图像和样式图像。出于我们的目的,我们将使用本书的封面图片作为原始图像;对于风格形象,我们将使用文森特·梵高的星夜。随意使用您想要的任何两张图片。如果您选择使用这些图片,[可以在本书的 GitHub 网站上找到(导航到 Styelnet 部分)](https://github.com/nfmcclure/tensorflow_cookbook): ```py original_image_file = 'temp/book_cover.jpg' diff --git a/docs/tf-ml-cookbook-2e-zh/ch09.md b/docs/tf-ml-cookbook-2e-zh/ch09.md index d790455de80c02aefd20bcace3d8779d2f2c8370..141a2a311debdf592e3ca820185c3f58f75112ea 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch09.md +++ b/docs/tf-ml-cookbook-2e-zh/ch09.md @@ -65,7 +65,7 @@ import tensorflow as tf from zipfile import ZipFile ``` -1. 接下来,我们启动图会话并设置 RNN 模型参数。我们将通过`20`周期以`250`的批量大小运行数据。我们将考虑的每个文本的最大长度是`25`字;我们将更长的文本剪切为`25`或零填充短文本。 RNN 将是`10`单元。我们只考虑在词汇表中出现至少 10 次的单词,并且每个单词都将嵌入到可训练的大小`50`中。droupout 率将是我们可以在训练期间`0.5`或评估期间`1.0`设置的占位符: +1. 接下来,我们启动图会话并设置 RNN 模型参数。我们将通过`20`周期以`250`的批量大小运行数据。我们将考虑的每个文本的最大长度是`25`字;我们将更长的文本剪切为`25`或零填充短文本。 RNN 将是`10`单元。我们只考虑在词汇表中出现至少 10 次的单词,并且每个单词都将嵌入到可训练的大小`50`中。droupout 率将是我们可以在训练期间`0.5`或评估期间`1.0`设置的占位符: ```py sess = tf.Session() @@ -179,7 +179,7 @@ output, state = tf.nn.dynamic_rnn(cell, embedding_output, dtype=tf.float32) output = tf.nn.dropout(output, dropout_keep_prob) ``` -> 注意,动态 RNN 允许可变长度序列。即使我们在这个例子中使用固定的序列长度,通常最好在 TensorFlow 中使用`dynamic_rnn`有两个主要原因。一个原因是,在实践中,动态 RNN 实际上运行速度更快;第二个是,如果我们选择,我们可以通过 RNN 运行不同长度的序列。 +> 注意,动态 RNN 允许可变长度序列。即使我们在这个例子中使用固定的序列长度,通常最好在 TensorFlow 中使用`dynamic_rnn`有两个主要原因。一个原因是,在实践中,动态 RNN 实际上运行速度更快;第二个是,如果我们选择,我们可以通过 RNN 运行不同长度的序列。 1. 现在要得到我们的预测,我们必须重新安排 RNN 并切掉最后一个输出: @@ -663,7 +663,7 @@ This results in the following plot of our loss values: ## 更多 -为了抽样,我们实现了一个贪婪的采样器。贪婪的采样器可能会一遍又一遍地重复相同的短语;例如,他们可能会卡住`for the for the` `for the....`为了防止这种情况,我们还可以实现一种更随机的采样方式,可能是根据输出的对数或概率分布制作加权采样器。 +为了抽样,我们实现了一个贪婪的采样器。贪婪的采样器可能会一遍又一遍地重复相同的短语;例如,他们可能会卡住`for the for the` `for the....`为了防止这种情况,我们还可以实现一种更随机的采样方式,可能是根据输出的对数或概率分布制作加权采样器。 # 堆叠多个 LSTM 层 @@ -781,7 +781,7 @@ TensorFlow 只需一个 RNN 单元列表即可轻松将 RNN 层扩展到多个 对于这个秘籍,我们将尝试构建一个语言翻译模型,以便从英语翻译成德语。 -TensorFlow 具有用于序列到序列训练的内置模型类。我们将说明如何在下载的英语 - 德语句子上训练和使用它。我们将使用的数据来自 [www.manythings.org](http://www.manythings.org/) 的编译 zip 文件,该文件汇编了[ Tatoeba 项目](http://tatoeba.org/home) 的数据。这些数据是制表符分隔的英语 - 德语句子翻译;例如,一行可能包含句子`hello. /t hallo`。该数据包含数千种不同长度的句子。 +TensorFlow 具有用于序列到序列训练的内置模型类。我们将说明如何在下载的英语 - 德语句子上训练和使用它。我们将使用的数据来自 [www.manythings.org](http://www.manythings.org/) 的编译 zip 文件,该文件汇编了[ Tatoeba 项目](http://tatoeba.org/home) 的数据。这些数据是制表符分隔的英语 - 德语句子翻译;例如,一行可能包含句子`hello. /t hallo`。该数据包含数千种不同长度的句子。 此部分的代码已升级为使用[官方 TensorFlow 仓库提供的神经机器翻译模型](https://github.com/tensorflow/nmt)。 @@ -1215,7 +1215,7 @@ eval_output = train.run_full_eval(hparams.out_dir, infer_graph, infer_sess, eval eval_results, _, acc_blue_scores = eval_output ``` -1. 现在我们创建初始化操作并初始化图;我们还初始化了一些将更新每次迭代的参数(时间,全局步骤和周期步骤): +1. 现在我们创建初始化操作并初始化图;我们还初始化了一些将更新每次迭代的参数(时间,全局步骤和周期步骤): ```py # Training Initialization diff --git a/docs/tf-ml-cookbook-2e-zh/ch10.md b/docs/tf-ml-cookbook-2e-zh/ch10.md index 9b694cb7c8838abd8cab6197b07c4f7fbc2b3837..c2ab03645f003ee1554b3405a88e62a9b2a17aba 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch10.md +++ b/docs/tf-ml-cookbook-2e-zh/ch10.md @@ -215,7 +215,7 @@ def main(argv): ({:.2f})'.format(*acc_and_loss)) ``` -1. 要让我们的脚本执行测试或训练,我们需要以不同的方式从命令行调用它。以下代码段是主程序代码。如果程序收到参数`test`,它将执行测试;否则,它将运行训练: +1. 要让我们的脚本执行测试或训练,我们需要以不同的方式从命令行调用它。以下代码段是主程序代码。如果程序收到参数`test`,它将执行测试;否则,它将运行训练: ```py if __name__ == '__main__': @@ -257,7 +257,7 @@ OK 要访问 GPU 设备,必须安装 GPU 版本的 TensorFlow。要安装 TensorFlow 的 GPU 版本,请访问[此链接](https://www.tensorflow.org/versions/master/get_started/os_setup.html)。下载,设置并按照特定系统的说明进行操作。请注意,TensorFlow 的 GPU 版本需要 CUDA 才能使用 GPU。 -在本文中,我们将向您展示各种命令,允许您访问系统上的各种设备;我们还将演示如何找出 TensorFlow 正在使用的设备。 +在本文中,我们将向您展示各种命令,允许您访问系统上的各种设备;我们还将演示如何找出 TensorFlow 正在使用的设备。 ## 操作步骤 diff --git a/docs/tf-ml-cookbook-2e-zh/ch11.md b/docs/tf-ml-cookbook-2e-zh/ch11.md index b142675389ac5e21598209008b7b4ea521a9e34a..bc246bcbe877983ec7db338668aabf69e0100508 100644 --- a/docs/tf-ml-cookbook-2e-zh/ch11.md +++ b/docs/tf-ml-cookbook-2e-zh/ch11.md @@ -555,7 +555,7 @@ plt.show() ![](img/f5c97339-7642-4ed5-bba4-53ac28640fda.png) -图 5:显示 k-means 的无监督分类算法的屏幕截图;可以用来将三种鸢尾花种组合在一起。三个 k-means 组是三个阴影区域,三个不同的点(圆,三角形和菱形)是三个真正的物种分类 +图 5:显示 k-means 的无监督分类算法的屏幕截图;可以用来将三种鸢尾花种组合在一起。三个 k-means 组是三个阴影区域,三个不同的点(圆,三角形和菱形)是三个真正的物种分类 ## 更多 @@ -692,7 +692,7 @@ regression_classifier = tf.estimator.BoostedTreesRegressor (x_train, y_train), (x_test, y_test) = boston_housing.load_data() ``` -1. 在这里,我们可以设置一些模型参数;批量大小是一次训练的训练观测数量,我们将训练`500`迭代,梯度提升森林将有`100`树,每棵树的最大深度(分裂数)为`6`。 +1. 在这里,我们可以设置一些模型参数;批量大小是一次训练的训练观测数量,我们将训练`500`迭代,梯度提升森林将有`100`树,每棵树的最大深度(分裂数)为`6`。 ```py # Batch size