diff --git a/docs/tf-20-quick-start-guide/00.md b/docs/tf-20-quick-start-guide/00.md index 80f6fe3e774ea5a2f24aac0703da52f1e71cbb9d..e1e1c562e1c7cd5d44d103433f9e4ba37f4673b0 100644 --- a/docs/tf-20-quick-start-guide/00.md +++ b/docs/tf-20-quick-start-guide/00.md @@ -16,7 +16,7 @@ TensorFlow 是 Python 中最受欢迎的机器学习框架之一。 通过这本 第 3 章,“TensorFlow 2 和 ANN 技术”,探讨了许多支持创建和使用神经网络的技术。 本章将介绍到 ANN 的数据表示,ANN 的层,创建模型,梯度下降算法的梯度计算,损失函数以及保存和恢复模型。 -第 4 章,“TensorFlow 2 和监督机器学习”,描述了在涉及线性回归的两种情况下使用 TensorFlow 的示例,在这些情况下,特征映射到具有连续值的已知标签,从而可以进行预测 看不见的特征。 +第 4 章,“TensorFlow 2 和监督机器学习”,描述了在涉及线性回归的两种情况下使用 TensorFlow 的示例,在这些情况下,特征映射到具有连续值的已知标签,从而可以进行预测看不见的特征。 第 5 章,“TensorFlow 2 和无监督学习”着眼于自动编码器在无监督学习中的两种应用:首先用于压缩数据;其次用于压缩数据。 第二,用于降噪,换句话说,去除图像中的噪声。 diff --git a/docs/tf-20-quick-start-guide/01.md b/docs/tf-20-quick-start-guide/01.md index 83e52408542c0db20e21679cf88be0ed0f5babf4..8c1c86692af2d7aa866eb28390380bc221f4eba0 100644 --- a/docs/tf-20-quick-start-guide/01.md +++ b/docs/tf-20-quick-start-guide/01.md @@ -4,7 +4,7 @@ TensorFlow 于 2011 年以 Google 的内部封闭源代码项目 DisBelief 诞 在撰写本书时,最新版本是 TensorFlow 2.0.0 alpha 版本,该版本在 2019 年 3 月 6 日的 TensorFlow 开发峰会上宣布。 -TensorFlow 的名字来源于张量。 张量是向量和矩阵到更高维度的一般化。 张量的等级是唯一指定该张量的每个元素所用的索引数。 标量(简单数字)是等级 0 的张量,向量是等级 1 的张量,矩阵是等级 2 的张量,三维数组是等级 3 的张量。张量具有数据类型 和形状(张量中的所有数据项必须具有相同的类型)。 4 维张量的示例(即等级 4)是图像,其中维是例如`batch`,`height`,`width`和`color`通道内的示例: +TensorFlow 的名字来源于张量。 张量是向量和矩阵到更高维度的一般化。 张量的等级是唯一指定该张量的每个元素所用的索引数。 标量(简单数字)是等级 0 的张量,向量是等级 1 的张量,矩阵是等级 2 的张量,三维数组是等级 3 的张量。张量具有数据类型和形状(张量中的所有数据项必须具有相同的类型)。 4 维张量的示例(即等级 4)是图像,其中维是例如`batch`,`height`,`width`和`color`通道内的示例: ```py image1 = tf.zeros([7, 28, 28, 3]) # example-within-batch by height by width by color diff --git a/docs/tf-20-quick-start-guide/04.md b/docs/tf-20-quick-start-guide/04.md index 799220c01c574c39785427550d9e926e2e06f4ba..1ba581f1bd2164d484f8e3b895cdfd5c7cced992 100644 --- a/docs/tf-20-quick-start-guide/04.md +++ b/docs/tf-20-quick-start-guide/04.md @@ -13,7 +13,7 @@ # 监督学习 -监督学习是一种机器学习场景,其中一组数据点中的一个或多个数据点与标签关联。 然后,模型*学习*,以预测看不见的数据点的标签。 为了我们的目的,每个数据点通常都是张量,并与一个标签关联。 在计算机视觉中,有很多受监督的学习问题; 例如,算法显示了许多成熟和未成熟的西红柿的图片,以及表明它们是否成熟的分类标签,并且在训练结束后,该模型能够预测未成熟的西红柿的状态 它的训练集。 这可能在番茄的物理分拣机制中有非常直接的应用。 或一种算法,该算法可以在显示许多示例以及它们的性别和年龄之后,学会预测新面孔的性别和年龄。 此外,如果模型已经在许多树图像及其类型标签上进行了训练,则可以学习根据树图像来预测树的类型可能是有益的。 +监督学习是一种机器学习场景,其中一组数据点中的一个或多个数据点与标签关联。 然后,模型*学习*,以预测看不见的数据点的标签。 为了我们的目的,每个数据点通常都是张量,并与一个标签关联。 在计算机视觉中,有很多受监督的学习问题; 例如,算法显示了许多成熟和未成熟的西红柿的图片,以及表明它们是否成熟的分类标签,并且在训练结束后,该模型能够根据训练集预测未成熟的西红柿的状态。 这可能在番茄的物理分拣机制中有非常直接的应用。 或一种算法,该算法可以在显示许多示例以及它们的性别和年龄之后,学会预测新面孔的性别和年龄。 此外,如果模型已经在许多树图像及其类型标签上进行了训练,则可以学习根据树图像来预测树的类型可能是有益的。 # 线性回归 @@ -314,7 +314,7 @@ split = 50000 (y_train, y_valid) = y_train[:split], y_train[split:] ``` -如果标签是一键编码的,那么许多机器学习算法效果最好,因此我们接下来要做。 但请注意,我们会将产生的一束热张量转换回(一束热)NumPy 数组,以备稍后由 Keras 使用: +如果标签是单热编码的,那么许多机器学习算法效果最好,因此我们接下来要做。 但请注意,我们会将产生的一束热张量转换回(一束热)NumPy 数组,以备稍后由 Keras 使用: ```py # one hot encode the labels using TensorFLow. @@ -326,7 +326,7 @@ split = 50000 #or use tf.keras.utils.to_categorical(y_train,10) ``` -这是一段代码,其中显示了一个介于零到九之间的值以及其一键编码版本: +这是一段代码,其中显示了一个介于零到九之间的值以及其单热编码版本: ```py # show difference between original label and one-hot-encoded label @@ -357,7 +357,7 @@ for i in range(10): 对于我们的逻辑回归示例,我们需要在子类中编写两个方法。 首先,我们需要编写一个构造函数,该构造函数调用超类的构造函数,以便正确创建模型。 在这里,我们传入正在使用的类数(`10`),并在实例化模型以创建单个层时使用此构造函数。 我们还必须声明`call`方法,并使用该方法来编程在模型训练的正向传递过程中发生的情况。 -稍后,当我们考虑具有前向和后向传递的神经网络时,我们将对这种情况进行更多说明。 对于我们当前的目的,我们只需要知道在 call 方法中,我们采用输入的`softmax`来产生输出。 `softmax`函数的作用是获取一个矢量(或张量),然后在其元素具有该矢量最大值的位置上用几乎为 1 的值覆盖,在所有其他位置上使用以下值覆盖 几乎为零的值。 这与一键编码很相似。 请注意,在此方法中,由于`softmax`未为 GPU 实现,因此我们必须在 CPU 上强制执行: +稍后,当我们考虑具有前向和后向传递的神经网络时,我们将对这种情况进行更多说明。 对于我们当前的目的,我们只需要知道在 call 方法中,我们采用输入的`softmax`来产生输出。 `softmax`函数的作用是获取一个矢量(或张量),然后在其元素具有该矢量最大值的位置上用几乎为 1 的值覆盖,在所有其他位置上使用几乎为零的值覆盖。 这与单热编码很相似。 请注意,在此方法中,由于`softmax`未为 GPU 实现,因此我们必须在 CPU 上强制执行: ```py # model definition (the canonical Google way) @@ -487,7 +487,7 @@ x.shape, y.shape flower_labels = ["iris setosa", "iris virginica", "iris versicolor"] ``` -现在是时候对标签进行一次热编码了。 `np.eye`返回一个二维数组,在对角线上有一个,默认为主对角线。 然后用`y`进行索引为我们提供了所需的`y`一键编码: +现在是时候对标签进行一次热编码了。 `np.eye`返回一个二维数组,在对角线上有一个,默认为主对角线。 然后用`y`进行索引为我们提供了所需的`y`单热编码: ```py #one hot encoding, another method @@ -605,4 +605,4 @@ print("Accuracy = ",accuracy,"%") 在本章中,我们看到了在涉及线性回归的两种情况下使用 TensorFlow 的示例。 其中将特征映射到具有连续值的已知标签,从而可以对看不见的特征进行预测。 我们还看到了逻辑回归的一个示例,更好地描述为分类,其中将要素映射到分类标签,再次允许对看不见的要素进行预测。 最后,我们研究了用于分类的 KNN 算法。 -我们现在将在第 5 章“将 TensorFlow 2 用于无监督学习”,继续进行无监督学习,在该过程中,要素和标签之间没有初始映射,并且 TensorFlow 的任务是 发现功能之​​间的关系。 \ No newline at end of file +我们现在将在第 5 章“将 TensorFlow 2 用于无监督学习”,继续进行无监督学习,在该过程中,要素和标签之间没有初始映射,并且 TensorFlow 的任务是发现功能之​​间的关系。 \ No newline at end of file diff --git a/docs/tf-20-quick-start-guide/06.md b/docs/tf-20-quick-start-guide/06.md index 5a40b17618b6e638467c4791de5adcf453bb8d05..a564994d65cb1335abb35c4d3d9638aff38a8fea 100644 --- a/docs/tf-20-quick-start-guide/06.md +++ b/docs/tf-20-quick-start-guide/06.md @@ -123,7 +123,7 @@ for file in filenames: x_train, x_test, y_train, y_test = train_test_split(x_all, y_all, test_size=0.2, random_state=42) ``` -由于我们将使用卷积神经网络(`convNet`)对快速抽奖进行分类! 图像,接下来要做的是将`x_train`和`x_test`重塑为 28 x 28 x 1 图像,它们开始出现时的样子,其中前两个维度是图像的高度和宽度(以像素为单位),第三个维度是 每个像素的灰度。 我们还将建立`input_shape`,并将其用于`convNet`的第一层: +由于我们将使用卷积神经网络(`convNet`)对快速抽奖进行分类! 图像,接下来要做的是将`x_train`和`x_test`重塑为 28 x 28 x 1 图像,它们开始出现时的样子,其中前两个维度是图像的高度和宽度(以像素为单位),第三个维度是每个像素的灰度。 我们还将建立`input_shape`,并将其用于`convNet`的第一层: ```py x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) diff --git a/docs/tf-20-quick-start-guide/07.md b/docs/tf-20-quick-start-guide/07.md index 20289b95c38944a2edbc2e3d5ba4bdbfec42a3f8..68af803916c9707dce85c3f0420f5b8db36c3b6b 100644 --- a/docs/tf-20-quick-start-guide/07.md +++ b/docs/tf-20-quick-start-guide/07.md @@ -65,7 +65,7 @@ style_path = './tmp/nst/zebra.jpg' # zebra:Yathin S Krishnappa, https://creative # 预处理图像 -下一个功能只需稍作预处理即可加载图像。 `Image.open()`是所谓的惰性操作。 该函数找到文件并将其打开以进行读取,但是实际上直到从您尝试对其进行处理或加载数据以来,才从文件中读取图像数据。 下一组三行会调整图像的大小,以便任一方向的最大尺寸为 512(`max_dimension`)像素。 例如,如果图像为 1,024 x 768,则`scale`将为 0.5(512 / 1,024),并且这将应用于图像的两个尺寸,从而将图像大小调整为 512 x384。`Image.ANTIALIAS`参数 保留最佳图像质量。 接下来,使用`img_to_array()`调用(`tensorflow.keras.preprocessing`的方法)将 PIL 图像转换为 NumPy 数组。 +下一个功能只需稍作预处理即可加载图像。 `Image.open()`是所谓的惰性操作。 该函数找到文件并将其打开以进行读取,但是实际上直到从您尝试对其进行处理或加载数据以来,才从文件中读取图像数据。 下一组三行会调整图像的大小,以便任一方向的最大尺寸为 512(`max_dimension`)像素。 例如,如果图像为 1,024 x 768,则`scale`将为 0.5(512 / 1,024),并且这将应用于图像的两个尺寸,从而将图像大小调整为 512 x384。`Image.ANTIALIAS`参数保留最佳图像质量。 接下来,使用`img_to_array()`调用(`tensorflow.keras.preprocessing`的方法)将 PIL 图像转换为 NumPy 数组。 最后,为了与以后的使用兼容,图像需要沿零轴的批次尺寸(由于图像是彩色的,因此共给出了四个尺寸)。 这可以通过调用`np.expand_dims()`实现: diff --git a/docs/tf-20-quick-start-guide/08.md b/docs/tf-20-quick-start-guide/08.md index 49e3766dc1bea79dc437d2c5b847daceb5569b7b..c2b0bfedd8e21790a728b5a6b8b451139a70228c 100644 --- a/docs/tf-20-quick-start-guide/08.md +++ b/docs/tf-20-quick-start-guide/08.md @@ -51,7 +51,7 @@ RNN 的每个单独项目到网络的输入称为**时间步长**。 因此, 展开式循环神经网络 -RNN 在称为**沿时间反向传播**(**BPTT**)的过程中通过反向传播进行训练。 在此可以想象 RNN 的展开(也称为**展开**)会创建一系列神经网络,并且会针对每个时间步长计算误差并将其合并,以便可以将网络中的权重更新为 通常与反向传播。 例如,为了计算梯度,从而计算误差,在时间步`t = 6`时,我们将向后传播五个步,并对梯度求和。 但是,在尝试学习长期依赖关系时(即在相距很远的时间步之间),这种方法存在问题,因为梯度可能变得太小而使学习变得不可能或非常缓慢,或者它们可能变得 太大并淹没了网络。 这被称为消失/爆炸梯度问题,并且已经发明了各种修改方法来解决它,包括**长短期记忆**(**LSTM**)网络和**门控循环单元**(**GRU** **s**),我们将在以后使用。 +RNN 在称为**沿时间反向传播**(**BPTT**)的过程中通过反向传播进行训练。 在此可以想象 RNN 的展开(也称为**展开**)会创建一系列神经网络,并且会针对每个时间步长计算误差并将其合并,以便可以使用反向传播更新网络中的权重。 例如,为了计算梯度,从而计算误差,在时间步`t = 6`时,我们将向后传播五个步,并对梯度求和。 但是,在尝试学习长期依赖关系时(即在相距很远的时间步之间),这种方法存在问题,因为梯度可能变得太小而使学习变得不可能或非常缓慢,或者它们可能变得太大并淹没了网络。 这被称为消失/爆炸梯度问题,并且已经发明了各种修改方法来解决它,包括**长短期记忆**(**LSTM**)网络和**门控循环单元**(**GRU** **s**),我们将在以后使用。 下图显示了有关展开(或展开)的更多详细信息: diff --git a/docs/tf-20-quick-start-guide/09.md b/docs/tf-20-quick-start-guide/09.md index 739026c0e61b5082ff0e5760da57320bb251fe4c..4923fb878a8478586580a6fbabd7de03a5ec7e76 100644 --- a/docs/tf-20-quick-start-guide/09.md +++ b/docs/tf-20-quick-start-guide/09.md @@ -127,7 +127,7 @@ classifier = tf.estimator.DNNClassifier( , loss_reduction=tf.compat.v1.losses.Reduction.SUM) ``` -现在,我们准备训练模型。 如果您第二次或之后运行`.train`循环,则 Estimator 将从`model_dir`加载其模型参数,并进行进一步的`steps`训练(要完全从头开始,只需删除指定的目录 通过`model_dir`): +现在,我们准备训练模型。 如果您第二次或之后运行`.train`循环,则 Estimator 将从`model_dir`加载其模型参数,并进行进一步的`steps`训练(要完全从头开始,只需通过`model_dir`删除指定的目录): ```py classifier.train(input_fn=train_input_fn, steps=10000)