提交 ddf88bed 编写于 作者: W wizardforcel

2020-08-03 22:19:06

上级 c6f87e16
......@@ -151,7 +151,7 @@ zeros_similar = tf.zeros_like(constant_tsr)
ones_similar = tf.ones_like(constant_tsr)
```
> 请注意,由于这些张量依赖于先前的张量,我们必须按顺序初始化它们。尝试一次初始化所有张量将导致错误。有关变量和占位符,请参阅下一节末尾的“更多...”小节。
> 请注意,由于这些张量依赖于先前的张量,我们必须按顺序初始化它们。尝试一次初始化所有张量将导致错误。有关变量和占位符,请参阅下一节末尾的“更多”小节。
1. 序列张量:TensorFlow 允许我们指定包含定义间隔的张量。以下函数与 NumPy 的`linspace()`输出和`range()`输出非常相似。请参阅以下函数:
......@@ -173,7 +173,7 @@ integer_seq_tsr = tf.range(start=6, limit=15, delta=3)
randunif_tsr = tf.random_uniform([row_dim, col_dim], minval=0, maxval=1)
```
注意,这种随机均匀分布来自包含`minval`但不包括`maxval``minval <= x < maxval`)的区间。
注意,这种随机均匀分布来自包含`minval`但不包括`maxval``minval >= x < maxval`)的区间。
要从正态分布中获取随机抽取的张量,可以运行以下代码:
......@@ -567,7 +567,7 @@ print(sess.run(tf.nn.softplus([-1., 0., -1.])))
> 当输入增加时,`softplus`函数变为无穷大,而`softsign`函数变为 1.然而,当输入变小时,`softplus`函数接近零,`softsign`函数变为-1。
1. 指数线性单元(ELU)与 softplus 函数非常相似,只是底部渐近线为-1 而不是 0.如果`x &lt; 0`其他`x`,则形式为`exp(x) + 1`。它看起来如下:
1. 指数线性单元(ELU)与 softplus 函数非常相似,只是底部渐近线为 -1 而不是 0.如果`x < 0`其他`x`,则形式为`exp(x) + 1`。它看起来如下:
```py
print(sess.run(tf.nn.elu([-1., 0., -1.])))
......
......@@ -240,7 +240,7 @@ import tensorflow as tf
## 操作步骤
1. 首先,我们将讨论回归的损失函数,这意味着预测连续的因变量。首先,我们将创建一个预测序列和一个作为张量的目标。我们将在-1 和 1 之间输出 500 x 值的结果。有关输出的绘图,请参阅“工作原理...”部分。使用以下代码:
1. 首先,我们将讨论回归的损失函数,这意味着预测连续的因变量。首先,我们将创建一个预测序列和一个作为张量的目标。我们将在-1 和 1 之间输出 500 x 值的结果。有关输出的绘图,请参阅“工作原理”部分。使用以下代码:
```py
x_vals = tf.linspace(-1., 1., 500)
......@@ -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)
......
......@@ -504,7 +504,7 @@ deming 回归的方法几乎与常规线性回归相同。关键的区别在于
对于套索回归,如果斜率`A`超过某个值,我们必须添加一个能大大增加损失函数的项。我们可以使用 TensorFlow 的逻辑运算,但它们没有与之关联的梯度。相反,我们将使用称为连续重阶函数的阶梯函数的连续近似,该函数按比例放大到我们选择的正则化截止值。我们将展示如何在此秘籍中进行套索回归。
对于岭回归,我们只是在 L2 范数中添加一个项,这是斜率系数的缩放 L2 范数。这种修改很简单,并在本秘籍末尾的“更多...”部分中显示。
对于岭回归,我们只是在 L2 范数中添加一个项,这是斜率系数的缩放 L2 范数。这种修改很简单,并在本秘籍末尾的“更多”部分中显示。
## 操作步骤
......
......@@ -800,7 +800,7 @@ plt.show()
## 准备
通过设计,SVM 算法是二元分类器。但是,有一些策略可以让他们在多个类上工作。两种主要策略称为“一对一”,“一对”。
通过设计,SVM 算法是二元分类器。但是,有一些策略可以让他们在多个类上工作。两种主要策略称为“一对一”,“一对剩余”。
一对一是一种策略,其中为每个可能的类对创建二分类器。然后,对具有最多投票的类的点进行预测。这可能在计算上很难,因为我们必须为`k`类创建`k!/(k - 2)!2!`个分类器。
......
......@@ -770,7 +770,7 @@ Fully connected layer on all four rows with five outputs:
## 准备
现在我们知道如何创建神经网络并使用层,我们将应用此方法,以预测低出生体重数据集中的出生体重。我们将创建一个具有三个隐藏层的神经网络。低出生体重数据集包括实际出生体重和出生体重是否高于或低于 2,500 克的指标变量。在这个例子中,我们将目标设为实际出生体重(回归),然后在最后查看分类的准确率。最后,我们的模型应该能够确定出生体重是否&lt; 2,500 克。
现在我们知道如何创建神经网络并使用层,我们将应用此方法,以预测低出生体重数据集中的出生体重。我们将创建一个具有三个隐藏层的神经网络。低出生体重数据集包括实际出生体重和出生体重是否高于或低于 2,500 克的指标变量。在这个例子中,我们将目标设为实际出生体重(回归),然后在最后查看分类的准确率。最后,我们的模型应该能够确定出生体重是否小于 2,500 克。
## 操作步骤
......@@ -1134,7 +1134,7 @@ init = tf.global_variables_initializer()
sess.run(init)
```
> 交叉熵是一种测量概率之间距离的方法。在这里,我们想要测量确定性(0 或 1)与模型概率(`0&lt;x&lt;1`)之间的差异。 TensorFlow 使用内置的 sigmoid 函数实现交叉熵。这也是超参数调整的一部分,因为我们更有可能找到最佳的损失函数,学习率和针对当前问题的优化算法。为简洁起见,我们不包括超参数调整。
> 交叉熵是一种测量概率之间距离的方法。在这里,我们想要测量确定性(0 或 1)与模型概率(`0 < x < 1`)之间的差异。 TensorFlow 使用内置的 sigmoid 函数实现交叉熵。这也是超参数调整的一部分,因为我们更有可能找到最佳的损失函数,学习率和针对当前问题的优化算法。为简洁起见,我们不包括超参数调整。
1. 为了评估和比较我们的模型与以前的模型,我们需要在图上创建预测和精度操作。这将允许我们提供整个测试集并确定准确率,如下所示:
......
......@@ -305,7 +305,7 @@ TF-IDF 是一个缩写,代表文本频率 - 反向文档频率。该术语基
![](img/6d9df72e-4e84-45f4-864f-32730248af36.png)
这里`w&lt;sub&gt;tf&lt;/sub&gt;`是文档中的单词频率,`w&lt;sub&gt;df&lt;/sub&gt;` 是所有文档中这些单词的总频率。有意义的是,TF-IDF 的高值可能表示在确定文档内容时非常重要的单词。
这里`w[tf]`是文档中的单词频率,`w[df]`是所有文档中这些单词的总频率。有意义的是,TF-IDF 的高值可能表示在确定文档内容时非常重要的单词。
创建 TF-IDF 向量要求我们将所有文本加载到内存中,并在开始训练模型之前计算每个单词的出现次数。因此,它没有在 TensorFlow 中完全实现,因此我们将使用 scikit-learn 来创建我们的 TF-IDF 嵌入,但是使用 TensorFlow 来适应逻辑模型。
......
......@@ -296,13 +296,13 @@ CNN 非常适合图像识别。造成这种情况的部分原因是卷积层创
## 准备
在本文中,我们将实现一种更先进的读取图像数据的方法,并使用更大的 CNN 在 [CIFAR10](https://www.cs.toronto.edu/~kriz/cifar.html) 数据集上进行图像识别。该数据集具有 60,000 个`32x32`图像,这些图像恰好属于十个可能类别中的一个。图像的潜在类别是飞机,汽车,鸟,猫,鹿,狗,青蛙,马,船和卡车。另请参阅“另请参阅”部分中的第一个要点。
在本文中,我们将实现一种更先进的读取图像数据的方法,并使用更大的 CNN 在 [CIFAR10](https://www.cs.toronto.edu/~kriz/cifar.html) 数据集上进行图像识别。该数据集具有 60,000 个`32x32`图像,这些图像恰好属于十个可能类别中的一个。图像的潜在类别是飞机,汽车,鸟,猫,鹿,狗,青蛙,马,船和卡车。另见“另见”部分中的第一个要点。
大多数图像数据集太大而无法放入内存中。我们可以使用 TensorFlow 设置一个图像管道,一次从一个文件中一次读取。我们通过设置图像阅读器,然后创建在图像阅读器上运行的批量队列来完成此操作。
此外,对于图像识别数据,通常在将图像发送之前随机扰动图像以进行训练。在这里,我们将随机裁剪,翻转和更改亮度。
此秘籍是官方 TensorFlow CIFAR-10 教程的改编版本,可在本章末尾的“另请参阅”部分中找到。我们将教程浓缩为一个脚本,我们将逐行完成并解释所有必要的代码。我们还将一些常量和参数恢复为原始引用的纸张值;我们将在适当的步骤中标记这一点。
此秘籍是官方 TensorFlow CIFAR-10 教程的改编版本,可在本章末尾的“另”部分中找到。我们将教程浓缩为一个脚本,我们将逐行完成并解释所有必要的代码。我们还将一些常量和参数恢复为原始引用的纸张值;我们将在适当的步骤中标记这一点。
## 操作步骤
......@@ -478,7 +478,7 @@ def cifar_cnn_model(input_images, batch_size, train_logical=True):
return final_output
```
> 我们的本地响应标准化参数取自本文,并在本文的“另请参见”部分中引用。
> 我们的本地响应标准化参数取自本文,并在本文的“另见”部分中引用。
1. 现在我们将创建损失函数。我们将使用 softmax 函数,因为图片只能占用一个类别,因此输出应该是十个目标的概率分布:
......@@ -638,7 +638,7 @@ plt.show()
其思想是从卷积层重用先前模型的权重和结构,并重新训练网络顶部的完全连接层。
TensorFlow 在现有 CNN 模型的基础上创建了一个关于训练的教程(请参阅下一节中的第一个要点)。在本文中,我们将说明如何对 CIFAR-10 使用相同的方法。我们将采用的 CNN 网络使用一种非常流行的架构,称为 Inception。 Inception CNN 模型由 Google 创建,在许多图像识别基准测试中表现非常出色。有关详细信息,请参阅“另请参阅”部分的第二个要点中的纸张参考。
TensorFlow 在现有 CNN 模型的基础上创建了一个关于训练的教程(请参阅下一节中的第一个要点)。在本文中,我们将说明如何对 CIFAR-10 使用相同的方法。我们将采用的 CNN 网络使用一种非常流行的架构,称为 Inception。 Inception CNN 模型由 Google 创建,在许多图像识别基准测试中表现非常出色。有关详细信息,请参阅“另”部分的第二个要点中的纸张参考。
我们将介绍的主要 Python 脚本显示如何下载 CIFAR-10 图像数据并自动分离,标记和保存图像到每个训练和测试文件夹中的十个类。之后,我们将重申如何在我们的图像上训练网络。
......@@ -1300,7 +1300,7 @@ if __name__=="__main__":
## 更多
我们敦促读者使用官方 DeepDream 教程作为进一步信息的来源,并访问 DeepDream 上的原始 Google 研究博客文章(请参阅下面的第二个要点参见另请参阅部分)。
我们敦促读者使用官方 DeepDream 教程作为进一步信息的来源,并访问 DeepDream 上的原始 Google 研究博客文章(请参阅下面的第二个要点参见另部分)。
## 另见
......
......@@ -777,7 +777,7 @@ $ tensorflow_model_server --port=9000 --model_name=spam_ham --model_base_path=<d
2018-08-09 12:05:16.334678: I tensorflow_serving/model_servers/main.cc:323] Running ModelServer at 0.0.0.0:9000 ...
```
1. 我们现在可以将二进制数据提交给`&lt;host&gt;:9000`并返回显示结果的 JSON 响应。我们可以通过任何机器和任何编程语言来完成。不必依赖客户端拥有 TensorFlow 的本地副本是非常有用的。
1. 我们现在可以将二进制数据提交给`<host>:9000`并返回显示结果的 JSON 响应。我们可以通过任何机器和任何编程语言来完成。不必依赖客户端拥有 TensorFlow 的本地副本是非常有用的。
## 工作原理
......
......@@ -577,7 +577,7 @@ Lotka-Volterra 系统于 1920 年在一篇论文中发表(参见图 1,标量
![](img/7efac4e2-7dbd-4a2e-a8d3-9282486208fc.png)
在这里,`X`是猎物,`Y`将成为捕食者。我们通过`a``b``c``d`的值来确定哪个是猎物,哪个是捕食者:对于猎物,`a&gt;0``b&lt;0`和捕食者,`c&lt;0``d&gt;0`。我们将在 TensorFlow 解决方案中将此离散版本实现到系统中。
在这里,`X`是猎物,`Y`将成为捕食者。我们通过`a``b``c``d`的值来确定哪个是猎物,哪个是捕食者:对于猎物,`a > 0``b < 0`和捕食者,`c < 0``d > 0`。我们将在 TensorFlow 解决方案中将此离散版本实现到系统中。
## 操作步骤
......@@ -662,7 +662,7 @@ plt.show()
This diagram illustrates a standard decision tree (left) which is non-differentiable, and a smooth decision tree (right), which illustrates the usage of sigmoid functions to develop probabilities of an observation appearing in a labeled leaf or end-node.
> 我们选择不详细介绍函数的可微性,连续性和平滑性。本节的目的是提供关于如何通过可微分模型近似非可微分模型的直观描述。有关更多数学详细信息,我们建议读者查看本秘籍末尾的“另请参阅”部分。
> 我们选择不详细介绍函数的可微性,连续性和平滑性。本节的目的是提供关于如何通过可微分模型近似非可微分模型的直观描述。有关更多数学详细信息,我们建议读者查看本秘籍末尾的“另”部分。
## 操作步骤
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册