提交 47c3c3ca 编写于 作者: W wizardforcel

2020-12-22 14:18:39

上级 1ac11257
......@@ -218,7 +218,7 @@ print(device_lib.list_local_devices())
浏览器窗口(lacalhost)
糟糕! 由于`0.0.0.0`不是真实的计算机,因此无法达到; 我们将其切换为`localhost`,点击*输入*,然后确定我们有一个 IPython Notebook
糟糕! 由于`0.0.0.0`不是真实的计算机,因此无法达到; 我们将其切换为`localhost`,点击“输入”,然后确定我们有一个 IPython 笔记本
![](img/86137a83-e41c-4ca7-b6a7-d8756db60446.png)
......
......@@ -46,7 +46,7 @@ Python 元组
现在,我们已经了解了一些 MNIST 数字,我们将花一些时间看一看张量以及张量是什么。 我们将要看一看多维数组的 NumPy。 多维数组也称为**张量**。 数学词汇可能会让人有些不知所措,但我们将向您展示它比您想象的要简单得多。 然后,我们来看看张量形状。 张量形状实际上是维度的数量,或者就数组而言,是用于访问它们的不同索引的数量。 最后,我们将研究数据类型。 张量或多维数组可以容纳各种各样的不同数据类型,我们将解释其中的一些区别。
让我们从基础开始。 您可以想象的最基本的张量是一个张量,在编程语言中该张量仅称为数组。 它只是一个打包在一起的有序数字序列。 接下来是两个张量。 如果查看*灰度图像(阵列的数组)*屏幕截图,则每一行都是一维的,而每一列是另一维的。
让我们从基础开始。 您可以想象的最基本的张量是一个张量,在编程语言中该张量仅称为数组。 它只是一个打包在一起的有序数字序列。 接下来是两个张量。 如果查看“灰度图像(阵列的数组)”屏幕截图,则每一行都是一维的,而每一列是另一维的。
因此,一行一行地加起来就是两个张量。 同样,它只是一个数组数组。 您会看到其中的训练图像的括号为零; 我们实际上是在选择图像数组中的第一个图像。 因此,在图像数据之前的三个张量实际上是图像阵列,每个图像阵列都有像素的列和行。 因此,三张量是我们存储黑白图像的基本方法。
......@@ -72,7 +72,7 @@ Python 元组
现在,让我们谈谈样本。 按照惯例,样本始终是多维数据数组中的第一维。 在这里,我们有多个样本,因为机器学习从根本上来说是通过查看大量不同样本中的大量不同数据点,然后学习基于此预测结果的函数来进行的。
因此,`train_images`多维数组中的每个图像都是我们要查看的样本之一。 但是,正如您在*灰度图像(阵列数组)*屏幕截图中所看到的那样,我们现在拥有的样本绝对不是浮点数; 这些仍然是 8 位整数。
因此,`train_images`多维数组中的每个图像都是我们要查看的样本之一。 但是,正如您在“灰度图像(阵列数组)”屏幕截图中所看到的那样,我们现在拥有的样本绝对不是浮点数; 这些仍然是 8 位整数。
因此,我们必须想出一种原理性的方法将图像从 8 位转换为浮点。
......
......@@ -161,9 +161,9 @@ Keras 功能模型
我们还将介绍可训练的参数(这些是求解器学习的参数),不可训练的参数(模型中不需要训练的其他参数),最后,超参数(a 不能学习的参数) 传统的求解器)。
在我们的*模型摘要输出*的屏幕截图中,请注意屏幕截图底部代码中突出显示的部分中可训练参数的数量。 这就是我们的模型`adam`优化器与我们的分类交叉熵`loss`函数一起将在模型内部包含的单个浮点数的数目,以便找到可能的最佳参数值。 因此,此可训练的参数编号是我们的`optimizer`函数学习的唯一编号集合。 但是,此代码和前面的屏幕快照中还有许多其他数字。 这些不可训练的参数呢? 在我们当前的模型中,有零个不可训练参数。 但是,Keras 中不同种类的图层可能具有恒定值,因此它们将显示为不可训练的。 再次,这只是意味着不需要对其进行培训,并且我们的`optimizer`函数将不会尝试更改其值。
在我们的“模型摘要输出”的屏幕截图中,请注意屏幕截图底部代码中突出显示的部分中可训练参数的数量。 这就是我们的模型`adam`优化器与我们的分类交叉熵`loss`函数一起将在模型内部包含的单个浮点数的数目,以便找到可能的最佳参数值。 因此,此可训练的参数编号是我们的`optimizer`函数学习的唯一编号集合。 但是,此代码和前面的屏幕快照中还有许多其他数字。 这些不可训练的参数呢? 在我们当前的模型中,有零个不可训练参数。 但是,Keras 中不同种类的图层可能具有恒定值,因此它们将显示为不可训练的。 再次,这只是意味着不需要对其进行培训,并且我们的`optimizer`函数将不会尝试更改其值。
那么,什么是超参数? 好吧,非常简单,超参数是模型本身之外的值(参数)。 因此,认为超参数最简单的是实际的模型结构。 在这种情况下,我们创建层的次数是一个超参数,层的大小是一个超参数,我们在密集层中选择的`32`单位是一个超参数,`0.1`退出设置是 超参数,甚至激活函数本身(例如,选择`relu`而不是`sigmoid`)都是超参数。 现在您可能在想,*请稍等,我不得不在这里选择很多参数;* *我以为机器应该在学习*。 它是! 但是,诀窍在于`optimizer`无法学习我们需要了解的所有知识,以组成一个最佳模型。
那么,什么是超参数? 好吧,非常简单,超参数是模型本身之外的值(参数)。 因此,认为超参数最简单的是实际的模型结构。 在这种情况下,我们创建层的次数是一个超参数,层的大小是一个超参数,我们在密集层中选择的`32`单位是一个超参数,`0.1`退出设置是 超参数,甚至激活函数本身(例如,选择`relu`而不是`sigmoid`)都是超参数。 现在您可能在想,“请稍等,我不得不在这里选择很多参数;我以为机器应该在学习”。 它是! 但是,诀窍在于`optimizer`无法学习我们需要了解的所有知识,以组成一个最佳模型。
# 网格搜索
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册