提交 18fa53dd 编写于 作者: W wizardforcel

2020-12-22 22:58:12

上级 602cb693
......@@ -41,7 +41,7 @@
![](img/cc268de7-1528-421d-8da7-1f54973a0fde.png)
乙状结肠功能
Sigmoid功能
这是一种 S 曲线,范围从零到一。 它实际上是由 e 构成的一个指数和一个比率。 现在,好消息是您实际上不必编写在这里看到的数学代码,因为当我们想在 Keras 中使用`sigmoid`时,我们只需使用名称`sigmoid`来引用它即可。
......
......@@ -106,7 +106,7 @@
![](img/f54ce333-0cdb-400f-b9d1-22d60475291f.png)
图 1.6:乙状结肠激活函数
图 1.6:Sigmoid激活函数
自然界中任何复杂的过程通常在输入输出关系上都是非线性的,因此,我们需要非线性激活函数通过神经网络对其进行建模。 两类分类的神经网络的输出概率通常由 S 型神经单元的输出给定,因为它的输出值从零到一。 输出概率可以表示如下:
......
......@@ -286,7 +286,7 @@ def build_generator(self,image,reuse=False,name='generator'):
我们通过使用`tf.get_variable_scope().reuse_variables()`使用`reuse`选项定义生成器功能。 当多次调用同一个生成器函数时,重用选项可确保我们重用特定生成器使用的相同变量。 当我们删除重用选项时,我们为生成器创建了一组新的变量。
例如,我们可能使用 generator 函数创建了两个生成器网络,因此在第一次创建这些网络时不会使用`reuse`选项。 如果再次引用该生成器功能,则使用`reuse`选项。 卷积(下采样)和解卷积(上采样)期间的激活函数是泄漏 ReLU,然后进行批量归一化,以实现稳定和快速的收敛。
例如,我们可能使用 generator 函数创建了两个生成器网络,因此在第一次创建这些网络时不会使用`reuse`选项。 如果再次引用该生成器功能,则使用`reuse`选项。 卷积(下采样)和解卷积(上采样)期间的激活函数是 LReLU,然后进行批量归一化,以实现稳定和快速的收敛。
网络不同层中的输出要素图的数量可以是`self.gf` 或其倍数。 对于我们的 DiscoGAN 网络,我们选择了`self.gf`作为`64`
......
......@@ -103,9 +103,9 @@
这只是一个经验法则。 但是,有更多正式的方法可以选择隐藏层的数量和神经元的数量,研究人员一直在努力寻找更好的方法来选择这些值。
* **激活函数**:激活函数是在隐藏层的每个神经元中使用的功能。 有很多选择。 **乙状结肠**是开发这些模型时使用的第一个功能,但随后研究人员发现使用此功能存在许多问题,因此他们提出了其他激活函数,例如**整流线性单元****ReLU**),**双曲正切****泄漏 ReLU** 以及我们将在进行中的示例中使用的其他一些选择。
* **激活函数**:激活函数是在隐藏层的每个神经元中使用的功能。 有很多选择。 **Sigmoid** 是开发这些模型时使用的第一个功能,但随后研究人员发现使用此功能存在许多问题,因此他们提出了其他激活函数,例如**整流线性单元****ReLU**),**双曲正切****LReLU** 以及我们将在进行中的示例中使用的其他一些选择。
* **优化算法**:这是用于学习网络权重的算法。 您选择的每种算法都有不同的超参数,建模者需要您选择它们​​。 训练这些网络的最基本算法是**梯度下降**。 但是,梯度下降的速度可能很慢并且存在一些问题,因此研究人员提出了其他算法,例如**动量优化器****AdaGrad****RMSProp****亚当**矩算法。 在 TensorFlow 中,我们可以选择很多算法,包括亚当矩算法,而这实际上是我们将在示例中使用的算法。
* **优化算法**:这是用于学习网络权重的算法。 您选择的每种算法都有不同的超参数,建模者需要您选择它们​​。 训练这些网络的最基本算法是**梯度下降**。 但是,梯度下降的速度可能很慢并且存在一些问题,因此研究人员提出了其他算法,例如**动量优化器****AdaGrad****RMSProp****Adam** 算法。 在 TensorFlow 中,我们可以选择很多算法,包括 Adam 算法,而这实际上是我们将在示例中使用的算法。
* **损失函数**:此函数将产生将由优化器最小化的数量。 损失函数的选择取决于问题。 如果我们正在做回归问题,则可以选择均方误差或均对均方误差。 对于分类问题,有更多选择,例如交叉熵,平方损失和铰链损失。 这类似于反复试验。 有时候,一个损失函数会解决您的问题,有时却不会。 因此,这就是为什么您必须考虑许多不同的损失函数的原因。 但是,请记住,损失函数将产生数量,该数量将用于优化算法,以调整将成为网络一部分的不同感知器的不同权重。 因此,这是将产生数量的函数,优化器的目标是使该数量尽可能小。
* **权重初始化策略**:必须使用一些值来初始化网络中每个感知器的权重,并且优化算法将逐步更改这些值以最大程度地减少损失。 您可以通过多种方式初始化这些值。 您可以用全零初始化。 多年来,研究人员习惯于使用随机正态分布进行初始化,但近年来,研究人员提出了更好的选择,包括 Xavier 初始化和 He 初始化。
* **正则化策略**:这是一项可选功能,但强烈建议您使用该功能,因为深度学习模型由于计算出的参数数量过多,往往会过拟合数据。 您可以使用许多选择,包括 L1 正则化,L2 正则化和辍学正则化策略。 在本书中,我们不会在示例中使用正则化,但请记住,如果您要构建真正有效的深度学习模型,则很有可能需要正则化策略。
......@@ -204,7 +204,7 @@ pip install --ignore-installed --upgrade tensorflow
# 计算图
计算图是布置在节点图中的一系列 TensorFlow 操作,也称为 **ops** 。 TensorFlow Core 使用以下两个基本步骤:
计算图是布置在节点图中的一系列 TensorFlow 操作,也称为 **OPS**。 TensorFlow Core 使用以下两个基本步骤:
1. 定义计算图
2. 运行计算图
......@@ -221,7 +221,7 @@ pip install --ignore-installed --upgrade tensorflow
![](img/ef618ce1-282e-41fd-9b3f-55b6317130f4.png)
在前面的屏幕截图中,我们看到了通过计算图流到图中不同节点的值。 因此,在第一个节点中,将值`3`分配给`x`,在另一个节点中,将值`2`分配给 **y [** 。 现在,`x`的值流到一个运算节点,在该运算节点上平方,该节点的结果流到另一个运算,在运算上与`y`的值相乘。 我们还有另一个节点,其中`y`的值乘以`4``x``y`乘法节点的结果以及`y`乘法节点的结果流到最终节点,即加法节点,这使我们 最终输出`26`。 因此,这基本上就是 TensorFlow 的工作方式。 节点之间流动的是张量。
在前面的屏幕截图中,我们看到了通过计算图流到图中不同节点的值。 因此,在第一个节点中,将值`3`分配给`x`,在另一个节点中,将值`2`分配给`y`。 现在,`x`的值流到一个运算节点,在该运算节点上平方,该节点的结果流到另一个运算,在运算上与`y`的值相乘。 我们还有另一个节点,其中`y`的值乘以`4``x``y`乘法节点的结果以及`y`乘法节点的结果流到最终节点,即加法节点,这使我们 最终输出`26`。 因此,这基本上就是 TensorFlow 的工作方式。 节点之间流动的是张量。
我们在 TensorFlow 中使用以下其他对象:
......
......@@ -16,7 +16,7 @@ TensorFlow 是 **Google Brain Team** 开发的开源库。 它用于大型机器
# MNIST 数据集简介
MNIST 代表**美国国家标准技术研究院**,它已经产生了一个手写的数字数据集。 这是机器学习中研究最多的数据集之一,用于对手写数字进行分类。 由于其庞大的规模,该数据集有助于进行预测分析,从而允许深度学习有效地发挥其魔力。 该数据集包含 60,000 个训练图像和 10,000 个测试图像,格式为 28 x 28 像素的单色图像。 以下屏幕截图显示了此数据集中包含的图像:
MNIST 代表**国家混合标准技术研究院**,它已经产生了一个手写的数字数据集。 这是机器学习中研究最多的数据集之一,用于对手写数字进行分类。 由于其庞大的规模,该数据集有助于进行预测分析,从而允许深度学习有效地发挥其魔力。 该数据集包含 60,000 个训练图像和 10,000 个测试图像,格式为 28 x 28 像素的单色图像。 以下屏幕截图显示了此数据集中包含的图像:
![](img/29266a1b-4e37-493c-b841-555f004034c3.png)
......@@ -60,7 +60,7 @@ relu = np.vectorize(relu)
`0`和输入之间获得最大值。 该激活函数将用于隐藏层的每个神经元。
* **优化** **算法**:此处使用的优化算法是学习率为 0.01 的梯度下降。
* **优化算法**:此处使用的优化算法是学习率为 0.01 的梯度下降。
* **损失函数**:对于`loss`函数,我们将使用`cross_entropy`函数,但是与本书中使用的其他损失函数一样,该函数将测量实际值与测量值之间的距离。 模型做出的预测。
* **权重初始化策略**:为此,我们将使用 Xavier 初始化程序,该方法实际上是 TensorFlow 的`fully_connected`函数默认提供的方法。
* **正则化策略**:我们将不使用任何正则化策略。
......@@ -160,11 +160,11 @@ y = tf.placeholder(tf.int64)
在运行模型之前,我们首先必须确定用于构建多层感知器模型的元素,如下所示:
* **架构:**该模型在输入层中包含 23 个元素,因此在此数据集中有 25 个要素。 尽管可以使用任意数量的隐藏层,但在输出层中只有一个元素,并且将使用三个隐藏层。 我们将在第一层使用 256 个神经元,第二层使用 128 个神经元,第三层使用 64 个神经元。 这是两个的力量。
* **激活函数:**我们将选择 ReLu 激活函数。
* **优化** **算法**:这里使用的优化算法是 Adam 优化器。 Adam 优化器是最受欢迎的优化器之一,因为它是解决许多问题的最佳选择。
* **架构**该模型在输入层中包含 23 个元素,因此在此数据集中有 25 个要素。 尽管可以使用任意数量的隐藏层,但在输出层中只有一个元素,并且将使用三个隐藏层。 我们将在第一层使用 256 个神经元,第二层使用 128 个神经元,第三层使用 64 个神经元。 这是两个的力量。
* **激活函数**我们将选择 ReLu 激活函数。
* **优化算法**:这里使用的优化算法是 Adam 优化器。 Adam 优化器是最受欢迎的优化器之一,因为它是解决许多问题的最佳选择。
* **损失函数**:我们将使用均方误差,因为我们在这里进行回归问题,这是`loss`函数的最佳选择之一。
* **权重初始化策略:**为此,我们将使用 Xavier 初始化程序,它是 TensorFlow 中`fully_connected`函数的默认设置。
* **权重初始化策略**为此,我们将使用 Xavier 初始化程序,它是 TensorFlow 中`fully_connected`函数的默认设置。
* **正则化策略**:我们将不使用任何正则化策略。
* **训练策略**:我们将使用 40 个周期。 我们将数据集呈现给网络 40 次,并且在每次迭代中,每次运行训练操作时,我们都会使用 50 个数据点的批次。 因此,我们将使用数据集中的 50 个元素。
......@@ -300,7 +300,7 @@ y = tf.placeholder(y_train.dtype)
的 2 的幂进行选择。
* **激活函数**:我们将选择 ELU 激活函数,该功能在上一章中已说明。
* **优化** **算法**:这里使用的优化算法是 Adam
* **优化算法**:这里使用的优化算法是 Adam
优化器,学习率为 0.001。
* **损失函数**:对于`loss`函数,我们将使用交叉熵函数。
* **权重初始化策略**:为此,我们将使用 Xavier 初始化程序,这是
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册