提交 f9532f50 编写于 作者: W wizardforcel

2020-09-08 22:09:48

上级 4f6fe4f9
......@@ -38,31 +38,6 @@ TensorFlow 是 Python 中最受欢迎的机器学习框架之一。 通过这本
强烈建议您对机器学习的概念和技术有所了解,但是如果读者愿意对这些主题进行一些阅读,则这不是绝对必要的。
# 下载示例代码文件
您可以从 [www.packt.com](http://www.packt.com) 的帐户中下载本书的示例代码文件。 如果您在其他地方购买了此书,则可以访问 [www.packt.com/support](http://www.packt.com/support) 并注册以将文件直接通过电子邮件发送给您。
您可以按照以下步骤下载代码文件:
1. 登录或注册 [www.packt.com](http://www.packt.com)
2. 选择支持选项卡。
3. 单击代码下载和勘误。
4. 在搜索框中输入书籍的名称,然后按照屏幕上的说明进行操作。
下载文件后,请确保使用以下最新版本解压缩或解压缩文件夹:
* Windows 的 WinRAR / 7-Zip
* Mac 版 Zipeg / iZip / UnRarX
* 适用于 Linux 的 7-Zip / PeaZip
本书的代码包也托管在 GitHub 的 [https://github.com/PacktPublishing/Tensorflow-2.0-Quick-Start-Guide](https://github.com/PacktPublishing/Tensorflow-2.0-Quick-Start-Guide) 上。 如果代码有更新,它将在现有 GitHub 存储库上进行更新。
我们还从 [https://github.com/PacktPublishing/](https://github.com/PacktPublishing/) 提供了丰富的书籍和视频目录中的其他代码包。 去看一下!
# 下载彩色图像
我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。 您可以在此处下载: [http://www.packtpub.com/sites/default/files/downloads/9781789530759_ColorImages.pdf](http://www.packtpub.com/sites/default/files/downloads/9781789530759_ColorImages.pdf)
# 使用约定
本书中使用了许多文本约定。
......
......@@ -61,15 +61,15 @@ Web 上有大量信息可用于安装 TensorFlow for Python。
Google 也建议在虚拟环境中安装 TensorFlow,这是一种标准做法,该环境将一组 API 和代码与其他 API 和代码以及系统范围的环境隔离开来。
TensorFlow 有两种不同的版本-一个用于在 CPU 上执行,另一个用于在 GPU 上执行。 最后,这需要安装数值库 CUDA 和 CuDNN。 Tensorflow 将在可能的情况下默认执行 GPU。 参见 [https://www.tensorflow.org/alpha/guide/using_gpu](https://www.tensorflow.org/alpha/guide/using_gpu)
TensorFlow 有两种不同的版本-一个用于在 CPU 上执行,另一个用于在 GPU 上执行。 最后,这需要安装数值库 CUDA 和 CuDNN。 Tensorflow 将在可能的情况下默认执行 GPU。 参见[这里](https://www.tensorflow.org/alpha/guide/using_gpu)
与其尝试重新发明轮子,不如跟随资源来创建虚拟环境和安装 TensorFlow。
总而言之,可能会为 Windows 7 或更高版本,Ubuntu Linux 16.04 或更高版本以及 macOS 10.12.6 或更高版本安装 TensorFlow。
有关虚拟环境的完整介绍,请参见 [http://docs.python-guide.org/](http://docs.python-guide.org/en/latest/dev/virtualenvs/)
有关虚拟环境的完整介绍,请参见[这里](http://docs.python-guide.org/en/latest/dev/virtualenvs/)
Google 的官方文档 [https://www.tensorflow.org/install/](https://www.tensorflow.org/install/) 中提供了有关安装 TensorFlow 所需的所有方面的非常详细的信息。
[Google 的官方文档](https://www.tensorflow.org/install/)中提供了有关安装 TensorFlow 所需的所有方面的非常详细的信息。
安装后,您可以从命令终端检查 TensorFlow 的安装。 [上有执行此操作的说明,http://www.laurencemoroney.com/tensorflow-to-gpu-or-not-to-gpu/](http://www.laurencemoroney.com/tensorflow-to-gpu-or-not-to-gpu/) 以及安装 TensorFlow 的夜间版本(其中包含所有 最新更新。
......@@ -90,7 +90,7 @@ print("Keras version: {}".format(tf.keras.__version__))
# TensorFlow 的编码样式约定
对于 Python 应用程序,Google 遵守 PEP8 标准约定。 特别是,他们将 CamelCase 用于类(例如`hub.LatestModuleExporter`),将`snake_case`用于功能,方法和属性(例如`tf.math.squared_difference`)。 Google 还遵守《 Google Python 样式指南》,该指南可在 [https://github.com/google/styleguide/blob/gh-pages/pyguide.md](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) 中找到。
对于 Python 应用程序,Google 遵守 PEP8 标准约定。 特别是,他们将 CamelCase 用于类(例如`hub.LatestModuleExporter`),将`snake_case`用于功能,方法和属性(例如`tf.math.squared_difference`)。 Google 还遵守《 Google Python 样式指南》,该指南可在[这个页面](https://github.com/google/styleguide/blob/gh-pages/pyguide.md)中找到。
# 使用急切的执行
......@@ -145,7 +145,7 @@ f64.dtype
TensorFlow 具有大量的内置数据类型。
示例包括之前看到的示例`tf.int16``tf.complex64``tf.string`。 参见 [https://www.tensorflow.org/api_docs/python/tf/dtypes/DType](https://www.tensorflow.org/api_docs/python/tf/dtypes/DType) 。 要重新分配变量,请使用`var.assign()`,如下所示:
示例包括之前看到的示例`tf.int16``tf.complex64``tf.string`。 参见[这里](https://www.tensorflow.org/api_docs/python/tf/dtypes/DType)。 要重新分配变量,请使用`var.assign()`,如下所示:
```py
f1 = tf.Variable(89.)
......@@ -299,7 +299,7 @@ s
# 查找张量的数据类型
TensorFlow 支持您期望的所有数据类型。 完整列表位于 [https://www.tensorflow.org/versions/r1.1/programmers_guide/dims_types](https://www.tensorflow.org/versions/r1.1/programmers_guide/dims_types) ,其中包括`tf.int32`(默认整数类型),`tf.float32`(默认浮动类型) 点类型)和`tf.complex64`(复数类型)。
TensorFlow 支持您期望的所有数据类型。 完整列表位于[这里](https://www.tensorflow.org/versions/r1.1/programmers_guide/dims_types),其中包括`tf.int32`(默认整数类型),`tf.float32`(默认浮动点类型)和`tf.complex64`(复数类型)。
要查找张量的数据类型,请使用以下`dtype`属性:
......@@ -364,11 +364,11 @@ tf.matmul(u, tf.transpose(a=v))
可用于构成计算图一部分的张量的所有操作也可用于渴望执行变量。
[https://www.tensorflow.org/api_guides/python/math_ops](https://www.tensorflow.org/api_guides/python/math_ops) 上有这些操作的完整列表。
[这个页面](https://www.tensorflow.org/api_guides/python/math_ops)上有这些操作的完整列表。
# 将张量转换为另一个(张量)数据类型
一种类型的 TensorFlow 变量可以强制转换为另一种类型。 可以在 [https://www.tensorflow.org/api_docs/python/tf/cast](https://www.tensorflow.org/api_docs/python/tf/cast) 中找到更多详细信息。
一种类型的 TensorFlow 变量可以强制转换为另一种类型。 可以在[这个页面](https://www.tensorflow.org/api_docs/python/tf/cast)中找到更多详细信息。
请看以下示例:
......@@ -456,9 +456,9 @@ row_splits=[0, 4, 4, 7, 8, 10]))
# 提供有用的 TensorFlow 操作
[https://www.tensorflow.org/api_docs/python/tf](https://www.tensorflow.org/api_docs/python/tf) 上有所有 TensorFlow Python 模块,类和函数的完整列表。
[这个页面](https://www.tensorflow.org/api_docs/python/tf)上有所有 TensorFlow Python 模块,类和函数的完整列表。
可以在 [https://www.tensorflow.org/api_docs/python/tf/math](https://www.tensorflow.org/api_docs/python/tf/math) 中找到所有数学函数。
可以在[这个页面](https://www.tensorflow.org/api_docs/python/tf/math)中找到所有数学函数。
在本节中,我们将研究一些有用的 TensorFlow 操作,尤其是在神经网络编程的上下文中。
......@@ -663,7 +663,7 @@ tf.Tensor(
# 使用随机值的实际示例
这是一个适合从 [https://colab.research.google.com/notebooks/mlcc/creating_and_manipulating_tensors.ipynb#scrollTo=6UUluecQSCvr](https://colab.research.google.com/notebooks/mlcc/creating_and_manipulating_tensors.ipynb#scrollTo=6UUluecQSCvr) 执行的小示例。
这是一个适合从[这个页面](https://colab.research.google.com/notebooks/mlcc/creating_and_manipulating_tensors.ipynb#scrollTo=6UUluecQSCvr)执行的小示例。
请注意,此示例显示了如何通过调用 TensorFlow 函数来初始化 eager 变量。
......
......@@ -18,7 +18,7 @@
# Keras 的采用和优势
下图显示了 Keras 在工业和研究领域的广泛应用。 *功率得分*排名由 Jeff Hale 设计,他使用了 7 个不同类别的 11 个数据源来评估框架的使用,兴趣和受欢迎程度。 然后,他对数据进行了加权和合并,如 2018 年 9 月的这篇中篇文章所示: [https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a](https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a)
下图显示了 Keras 在工业和研究领域的广泛应用。 *功率得分*排名由 Jeff Hale 设计,他使用了 7 个不同类别的 11 个数据源来评估框架的使用,兴趣和受欢迎程度。 然后,他对数据进行了加权和合并,[如 2018 年 9 月的这篇文章所示](https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a)
![](img/d90b06ca-d15d-4741-9f7c-511735d3181c.png)
......@@ -80,7 +80,7 @@ $HOME/.keras/keras.json
* `floatx`:这是一个字符串,指定默认的浮点精度,为`"float16"``"float32"``"float64"`之一。
* `backend`:这是一个字符串,指定 Keras 在`"tensorflow"``"theano"``"cntk"`中的一种之上发现自己的工具。
对于所有这些值,在`keras.backend`中有 getter 和 setter 方法。 参见 [https://keras.io/backend/](https://keras.io/backend/)
对于所有这些值,在`keras.backend`中有 getter 和 setter 方法。 参见[这里](https://keras.io/backend/)
例如,在以下集合中,供 Keras 使用的浮点类型为`floatx`,其中`floatx`参数是以下命令中所示的三种精度之一:
......@@ -92,7 +92,7 @@ keras.backend.set_floatx(floatx)
由于其模型级别的库结构,Keras 可能具有处理低级操作(例如卷积,张量乘积等)的不同张量操纵引擎。 这些引擎称为**后端**。 其他后端可用; 我们在这里不考虑它们。
相同的 [https://keras.io/backend/](https://keras.io/backend/) 链接可带您使用许多`keras.backend`功能。
相同的[链接](https://keras.io/backend/)可带您使用许多`keras.backend`功能。
使用 Keras `backend`的规范方法是:
......@@ -461,7 +461,7 @@ model.load_weights('./model_weights.h5')
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
```
可以在 [https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/datasets/](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/datasets/) 中找到更多详细信息。
可以在[这个页面](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/datasets/)中找到更多详细信息。
# 摘要
......
......@@ -343,7 +343,7 @@ ANN 使用的基本数据结构是**层**,许多相互连接的层构成了一
在此, *W* 是输入的权重, *X* 是输入向量, *f* 是非线性激活函数。
层的类型很多,支持大量的 ANN 模型结构。 可以在 [https://www.tensorflow.org/api_docs/python/tf/keras/layers](https://www.tensorflow.org/api_docs/python/tf/keras/layers) 中找到非常全面的列表。
层的类型很多,支持大量的 ANN 模型结构。 可以在[这个页面](https://www.tensorflow.org/api_docs/python/tf/keras/layers)中找到非常全面的列表。
在这里,我们将研究一些更流行的方法,以及 TensorFlow 如何实现它们。
......@@ -439,7 +439,7 @@ model2.add(tf.keras.layers.Dense(10,activation=tf.nn.softmax))
重要的是要注意,神经网络具有非线性激活函数,即应用于神经元加权输入之和的函数。 除了平凡的神经网络模型外,线性激活单元无法将输入层映射到输出层。
有许多常用的激活功能,包括 S 型,tanh,ReLU 和泄漏的 ReLU。 一个很好的总结,以及这些功能的图表,可以在这里找到: [https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6](https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6)
有许多常用的激活功能,包括 S 型,tanh,ReLU 和泄漏的 ReLU。 一个很好的总结,以及这些功能的图表,[可以在这里找到](https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6)
# 建立模型
......
......@@ -19,7 +19,7 @@
线性回归问题是在给定一个或多个其他变量(数据点)的值的情况下,您必须预测一个*连续*变量的值的问题。 例如,根据房屋的占地面积,预测房屋的售价。 在这些示例中,您可以将已知特征及其关联的标签绘制在简单的线性图上,如熟悉的 *x**y* 散点图,并绘制最适合数据的线 。 这就是最适合的**系列。 然后,您可以读取对应于该图的 *x* 范围内的任何要素值的标签。**
但是,线性回归问题可能涉及几个特征,其中使用了术语**多个****多元线性回归**。 在这种情况下,不是最适合数据的线,而是一个平面(两个要素)或一个超平面(两个以上要素)。 在房价示例中,我们可以将房间数量和花园的长度添加到要素中。 有一个著名的数据集,称为 Boston housing 数据集,涉及 13 个特征(有关更多信息,请参见 [https://www.kaggle.com/c/ml210-boston](https://www.kaggle.com/c/ml210-boston)。 考虑到这 13 个特征,此处的回归问题是预测波士顿郊区的房屋中位数。
但是,线性回归问题可能涉及几个特征,其中使用了术语**多个****多元线性回归**。 在这种情况下,不是最适合数据的线,而是一个平面(两个要素)或一个超平面(两个以上要素)。 在房价示例中,我们可以将房间数量和花园的长度添加到要素中。 有一个著名的数据集,称为 Boston housing 数据集,[涉及 13 个特征](https://www.kaggle.com/c/ml210-boston)。 考虑到这 13 个特征,此处的回归问题是预测波士顿郊区的房屋中位数。
术语:功能也称为预测变量或自变量。 标签也称为响应变量或因变量。
......@@ -382,7 +382,7 @@ class LogisticRegression(tf.keras.Model):
首先,我们确定可用的设备,然后使用它。 然后,使用我们开发的类声明模型。 声明要使用的优化程序后,我们将编译模型。 我们使用的损失,分类交叉熵(也称为**对数损失**),通常用于 logistic 回归,因为要求预测是概率。
优化器是一个选择和有效性的问题,有很多可用的方法(请参阅 [https://www.tensorflow.org/api_guides/python/train#Optimizers](https://www.tensorflow.org/api_guides/python/train#Optimizers)。 接下来是带有三个参数的`model.compile`调用。 我们将很快看到,它为我们的训练模型做准备。
优化器是一个选择和有效性的问题,[有很多可用的方法](https://www.tensorflow.org/api_guides/python/train#Optimizers)。 接下来是带有三个参数的`model.compile`调用。 我们将很快看到,它为我们的训练模型做准备。
在撰写本文时,优化器的选择是有限的。 `categorical_crossentropy`是多标签逻辑回归问题的正态损失函数,`'accuracy'`度量是通常用于分类问题的度量。
......@@ -462,7 +462,7 @@ for i, index in enumerate(np.random.choice(x_test.shape[0], size = size, replace
KNN 背后的想法相对简单。 给定新的特定数据点的值,请查看该点的 KNN,并根据该 k 个邻居的标签为该点分配标签,其中 *k* 是算法的参数。
在这种情况下,没有这样构造的模型。 该算法仅查看数据集中新点与所有其他数据点之间的所有距离,接下来,我们将使用由三种类型的鸢尾花组成的著名数据集:`iris setosa``iris virginica``iris versicolor`。 对于这些标签中的每一个,特征都是花瓣长度,花瓣宽度,萼片长度和萼片宽度。 有关显示此数据集的图表,请参见 [https://en.wikipedia.org/wiki/Iris_flower_data_set#/media/File:Iris_dataset_scatterplot.svg](https://en.wikipedia.org/wiki/Iris_flower_data_set#/media/File:Iris_dataset_scatterplot.svg)
在这种情况下,没有这样构造的模型。 该算法仅查看数据集中新点与所有其他数据点之间的所有距离,接下来,我们将使用由三种类型的鸢尾花组成的著名数据集:`iris setosa``iris virginica``iris versicolor`。 对于这些标签中的每一个,特征都是花瓣长度,花瓣宽度,萼片长度和萼片宽度。 有关显示此数据集的图表,请参见[这里](https://en.wikipedia.org/wiki/Iris_flower_data_set#/media/File:Iris_dataset_scatterplot.svg)
有 150 个数据点(每个数据点都包含前面提到的四个测量值)和 150 个相关标签。 我们将它们分为 120 个训练数据点和 30 个测试数据点。
......
......@@ -11,9 +11,9 @@
# 快速绘图–使用 TensorFlow 进行图像分类
我们将使用从 Google Quick Draw 拍摄的图像! 数据集。 这是一个公开的开放源代码,它包含 345 个类别的 5000 万张图像的数据集,所有这些图像都是由参与挑战的 1500 万名用户在 20 秒或更短的时间内绘制的。 我们将训练 10 个类别的 10,000 张图像,其中一些被选择为相似图像,以便我们可以测试模型的区分能力。 您可以在 [https://quickdraw.withgoogle.com/data](https://quickdraw.withgoogle.com/data) 上查看这些图像的示例。 这些图片有多种格式,请参见 [https://github.com/googlecreativelab/quickdraw-dataset](https://github.com/googlecreativelab/quickdraw-dataset) 中的所有格式。
我们将使用从 Google Quick Draw 拍摄的图像! 数据集。 这是一个公开的开放源代码,它包含 345 个类别的 5000 万张图像的数据集,所有这些图像都是由参与挑战的 1500 万名用户在 20 秒或更短的时间内绘制的。 我们将训练 10 个类别的 10,000 张图像,其中一些被选择为相似图像,以便我们可以测试模型的区分能力。 您可以在[这个页面](https://quickdraw.withgoogle.com/data)上查看这些图像的示例。 这些图片有多种格式,请参见[这个页面](https://github.com/googlecreativelab/quickdraw-dataset)中的所有格式。
在这里,我们将使用已存储为`.npy`文件的图像。 `.npy`文件的公共数据集托管在 [https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/numpy_bitmap?pli=1](https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/numpy_bitmap?pli=1) 上。 从这里可以一次下载一组。 要使用不同的图像运行此示例,请从数据目录中删除图像文件,然后将所需的图像下载到存储库中的同一目录中。 该程序从文件名中读取标签。
在这里,我们将使用已存储为`.npy`文件的图像。 `.npy`文件的公共数据集托管在[这个页面](https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/numpy_bitmap?pli=1)上。 从这里可以一次下载一组。 要使用不同的图像运行此示例,请从数据目录中删除图像文件,然后将所需的图像下载到存储库中的同一目录中。 该程序从文件名中读取标签。
在本节中,我们将涵盖以下主题:
......@@ -26,13 +26,13 @@
* 加载预训练的模型
* 使用预先训练的模型
我们将逐步开发和呈现代码片段。 这些代码段通过螺栓连接在一起,成为存储库中的完整程序( [https://github.com/PacktPublishing/Tensorflow-2-0-Quick-Start-Guide](https://github.com/PacktPublishing/Tensorflow-2.0-Quick-Start-Guide)
我们将逐步开发和呈现代码片段。 这些代码段通过螺栓连接在一起,[成为存储库中的完整程序](https://github.com/PacktPublishing/Tensorflow-2.0-Quick-Start-Guide)
# 采集数据
我们将需要从 Google 下载数据。 您可以将数据下载到一个空目录`data_files`
转到 [https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/numpy_bitmap?pli=1](https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/numpy_bitmap?pli=1) 并将 10 个数据集下载到`data_files`文件夹中。 以下是将要下载的文件的示例:
转到[这里](https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/numpy_bitmap?pli=1)并将 10 个数据集下载到`data_files`文件夹中。 以下是将要下载的文件的示例:
```py
'alarm_clock.npy', 'broom.npy', 'ant.npy', 'bee.npy', 'cell_phone.npy', 'baseball.npy', 'dolphin.npy', 'crocodile.npy', 'aircraft_carrier.npy', 'asparagus.npy'
......@@ -176,7 +176,7 @@ model.compile(loss=tf.keras.losses.categorical_crossentropy,
# 训练和测试模型
现在,我们可以使用`fit`方法训练模型。 注意验证集的使用,它不同于训练集。 `callbacks`列表还可以用于诸如保存最佳模型或在学习停止时终止训练(如果在所有时期完成之前发生这种情况)的操作。 有关详细信息,请参见 [https://keras.io/callbacks/](https://keras.io/callbacks/)
现在,我们可以使用`fit`方法训练模型。 注意验证集的使用,它不同于训练集。 `callbacks`列表还可以用于诸如保存最佳模型或在学习停止时终止训练(如果在所有时期完成之前发生这种情况)的操作。 有关详细信息,请参见[这里](https://keras.io/callbacks/)
```py
epochs=25
......@@ -226,7 +226,7 @@ TensorBoard 是用于训练模型的可视化工具。 TensorBoard 回调的完
tf.keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=32, write_graph=True, write_grads=False, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None, embeddings_data=None, update_freq='epoch')
```
[https://keras.io/callbacks/](https://keras.io/callbacks/) 上有所有这些参数的非常清晰而详细的描述。 TensorBoard 可以从命令行调用,如下所示:
[这个页面](https://keras.io/callbacks/) 上有所有这些参数的非常清晰而详细的描述。 TensorBoard 可以从命令行调用,如下所示:
```py
tensorboard --logdir=/full_path_to_your_logs
......@@ -363,7 +363,7 @@ with tf.device('/cpu:0'):
# 介绍
具有 10 个类别的 CIFAR 10 图像数据集是 8000 万个微型图像数据集的标记子集。 这些图像由 Alex Krizhevsky,Vinod Nair 和 Geoffrey Hinton 收集。 有关此数据集的完整详细信息,请访问 [https://www.cs.toronto.edu/~kriz/cifar.html](https://www.cs.toronto.edu/~kriz/cifar.html)
具有 10 个类别的 CIFAR 10 图像数据集是 8000 万个微型图像数据集的标记子集。 这些图像由 Alex Krizhevsky,Vinod Nair 和 Geoffrey Hinton 收集。 有关此数据集的完整详细信息,请访问[这里](https://www.cs.toronto.edu/~kriz/cifar.html)
在 10 个类别中,总共有 60,000 个 32 x 32 彩色图像,包括 50,000 个训练图像和 10,000 个测试图像。
......@@ -473,7 +473,7 @@ y_test = tf.keras.utils.to_categorical(y_test, number_of_classes)
model.add(Activation('elu'))
```
`elu`激活功能代表指数线性单位。 在 [https://sefiks.com/2018/01/02/elu-as-a-neural-networks-activation-function/](https://sefiks.com/2018/01/02/elu-as-a-neural-networks-activation-function/) 中有很好的描述。
`elu`激活功能代表指数线性单位。 在[这个页面](https://sefiks.com/2018/01/02/elu-as-a-neural-networks-activation-function/)中有很好的描述。
注意,我们正在使用具有卷积层,`BatchNormalization`和 MaxPooling 层的顺序模型。 倒数第二层使结构变平,最后一层使用 softmax 激活,因此我们预测的类将显示为具有最高激活的输出神经元:
......@@ -564,7 +564,7 @@ keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbo
callback = tf.keras.callbacks.EarlyStopping(monitor='accuracy', min_delta=0, patience=1, verbose=1,mode='max', restore_best_weights=True)
```
现在,我们可以训练模型了。 `fit.generator()`函数用于根据`flow()`生成器批量显示的数据训练模型。 可以在 [https://keras.io/models/sequential/#fit_generator](https://keras.io/models/sequential/#fit_generator) 中找到更多详细信息:
现在,我们可以训练模型了。 `fit.generator()`函数用于根据`flow()`生成器批量显示的数据训练模型。 可以在[这个页面](https://keras.io/models/sequential/#fit_generator)中找到更多详细信息:
```py
model.fit_generator(datagen.flow(x_train, y_train, batch_size=batch_size), epochs=epochs, callbacks=[callback])
......
......@@ -8,7 +8,7 @@
此过程中涉及一些技术-使用功能性 API,使用预训练的模型及其功能图以及使用自定义训练循环以最小化`loss`功能。 我们将在下面的代码中满足所有这些要求。
要充分利用该技术,有两个先决条件-Gatys 等人在 2015 年发表的原始论文 [https://arxiv.org/abs/1508.06576](https://arxiv.org/abs/1508.06576) 虽非必要,但确实可以解释该技术。 技术非常好,因此非常有必要了解如何通过梯度下降来减少损耗。
要充分利用该技术,有两个先决条件-Gatys 等人在 2015 年发表的[原始论文](https://arxiv.org/abs/1508.06576)虽非必要,但确实可以解释该技术。 技术非常好,因此非常有必要了解如何通过梯度下降来减少损耗。
我们将使用 VGG19 架构中的要素图层(已在著名的 ImageNet 数据集上进行了训练,其中包含 1400 万张图像和 1000 个类别)。
......@@ -166,11 +166,11 @@ def deprocess_image(processed_image):
# 使用 VGG19 架构
了解下一个代码片段的最好方法是查看 VGG19 架构。 这是一个好地方: [https://github.com/fchollet/deep-learning-models/blob/master/vgg19.py](https://github.com/fchollet/deep-learning-models/blob/master/vgg19.py) (大约位于页面的一半)。
了解下一个代码片段的最好方法是查看 VGG19 架构。 [这是一个好地方](https://github.com/fchollet/deep-learning-models/blob/master/vgg19.py)(大约位于页面的一半)。
在这里,您将看到 VGG19 是一个相当简单的体系结构,由卷积层的块组成,每个块的末尾都有一个最大池化层。
对于内容层,我们使用`block5`中的第二个卷积层。 之所以使用这个最高的块,是因为较早的块具有更能代表单个像素的特征图。 网络中的高层会根据对象及其在输入图像中的排列来捕获高级内容,但不会限制重建的实际精确像素值(请参见 Gatys 等人,2015, [https:// arx](https://arxiv.org/abs/1508.06576) [iv.org/abs/1508.06576](https://arxiv.org/abs/1508.06576) ,先前引用)
对于内容层,我们使用`block5`中的第二个卷积层。 之所以使用这个最高的块,是因为较早的块具有更能代表单个像素的特征图。 网络中的高层会根据对象及其在输入图像中的排列来捕获高级内容,[但不会限制重建的实际精确像素值](https://arxiv.org/abs/1508.06576)
对于样式层,我们将在每个层块中使用第一个卷积层,即`block1_conv1``block5_conv5`
......
......@@ -95,7 +95,7 @@ test_input_fn = tf.compat.v1.estimator.inputs.numpy_input_fn(
接下来,我们建立功能列。 功能列是一种将数据传递给 Estimator 的方法。
功能列功能的签名如下。 `key`是唯一的字符串,是与我们先前在输入函数中指定的字典名称相对应的列名称(有关不同类型的功能列的更多详细信息,请参见 [https:// www .tensorflow.org / api_docs / python / tf / feature_column](https://www.tensorflow.org/api_docs/python/tf/feature_column) ):
功能列功能的签名如下。 `key`是唯一的字符串,是与我们先前在输入函数中指定的字典名称相对应的列名称(有关不同类型的功能列的更多详细信息,请参见[这里](https://www.tensorflow.org/api_docs/python/tf/feature_column)):
```py
tf.feature_column.numeric_column(
......@@ -113,7 +113,7 @@ tf.feature_column.numeric_column(
feature_columns = [tf.feature_column.numeric_column("x", shape=[28, 28])]
```
接下来,我们实例化我们的 Estimator,它将进行分类。 它将为我们构建一个深度神经网络。 它的签名很长很详细,因此我们将带您参考 [https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier](https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier) ,因为我们将主要使用其默认参数。 它的第一个参数是我们刚刚指定的功能,而第二个参数是我们的网络规模。 (输入层和输出层由 Estimator 在后台添加。)`AdamOptimizer`是安全的选择。 `n_classes`对应于我们`fashion_mnist`数据集的`y`标签数量,我们在其中添加了`0.1`的适度`dropout`。 然后,`model_dir`是我们保存模型参数及其图形和检查点的目录。 此目录还用于将检查点重新加载到 Estimator 中以继续训练:
接下来,我们实例化我们的 Estimator,它将进行分类。 它将为我们构建一个深度神经网络。 它的签名很长很详细,因此我们将带您参考[这里](https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier),因为我们将主要使用其默认参数。 它的第一个参数是我们刚刚指定的功能,而第二个参数是我们的网络规模。 (输入层和输出层由 Estimator 在后台添加。)`AdamOptimizer`是安全的选择。 `n_classes`对应于我们`fashion_mnist`数据集的`y`标签数量,我们在其中添加了`0.1`的适度`dropout`。 然后,`model_dir`是我们保存模型参数及其图形和检查点的目录。 此目录还用于将检查点重新加载到 Estimator 中以继续训练:
```py
# Build 2 layer DNN classifier
......@@ -187,11 +187,11 @@ TensorFlow Hub 是一个软件库。 其目的是提供可重用的组件(称
词嵌入是数字的向量,因此具有相似含义的词也具有类似的向量。 这是监督学习的示例,因为评论的训练集将使用 IMDB 数据库提供的阳性值来训练模型。 然后,我们将在测试集上使用经过训练的模型,并查看其预测与 IMDB 数据库中存储的预测相比如何,从而为我们提供了一种准确度度量。
可以在 [http://ai.stanford.edu/~amaas/data/sentiment/](http://ai.stanford.edu/~amaas/data/sentiment/) 中找到该数据库论文的引文。
可以在[这个页面](http://ai.stanford.edu/~amaas/data/sentiment/)中找到该数据库论文的引文。
# 数据集
以下是数据库随附的自述文件( [http://ai.stanford.edu/~amaas/data/sentiment/](http://ai.stanford.edu/~amaas/data/sentiment/)
[以下是数据库随附的自述文件](http://ai.stanford.edu/~amaas/data/sentiment/)
"The core dataset contains 50,000 reviews split evenly into 25k train and 25k test sets. The overall distribution of labels is balanced (25k pos and 25k neg)."
"In the entire collection, no more than 30 reviews are allowed for any given movie because reviews for the same movie tend to have correlated ratings. Further, the train and test sets contain a disjoint set of movies, so no significant performance is obtained by memorizing movie-unique terms and their associated with observed labels. In the labeled train/test sets, a negative review has a score <= 4 out of 10, and a positive review has a score >= 7 out of 10\. Thus, reviews with more neutral ratings are not included in the train/test sets."
......@@ -346,7 +346,7 @@ predict_train_input_fn = tf.compat.v1.estimator.inputs.pandas_input_fn(train_df,
predict_test_input_fn = tf.compat.v1.estimator.inputs.pandas_input_fn(test_df, test_df["polarity"], shuffle=False)
```
然后,我们有功能列。 功能列是原始数据和估算器之间的中介。 共有九种功能列类型。 它们根据其类型采用数值或分类数据,然后将数据转换为适用于 Estimator 的格式。 在 [https://www.tensorflow.org/guide/feature_columns](https://www.tensorflow.org/guide/feature_columns) 上有一个出色的描述以及许多示例。
然后,我们有功能列。 功能列是原始数据和估算器之间的中介。 共有九种功能列类型。 它们根据其类型采用数值或分类数据,然后将数据转换为适用于 Estimator 的格式。 在[这个页面](https://www.tensorflow.org/guide/feature_columns)上有一个出色的描述以及许多示例。
请注意,嵌入来自`tf.hub`
......
......@@ -8,9 +8,9 @@ Google 提供了一个名为 `tf_upgrade_v2`的命令行脚本,该脚本会将
tf_upgrade_v2 --infile file_to_convert --outfile converted_file
```
[https://www.youtube.com/watch?v=JmSNUeBG-PQ & list = PLQY2H8rRoyvzoUYI26kHmKSJBedn3SQuB & index = 32 & t = 71s [](https://www.youtube.com/watch?v=JmSNUeBG-PQ&list=PLQY2H8rRoyvzoUYI26kHmKSJBedn3SQuB&index=32&t=71s) [,以及有关它的更多详细信息,请参见](https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md) [https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md](https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md)
[这里是更新脚本的实战演示](https://www.youtube.com/watch?v=JmSNUeBG-PQ&list=PLQY2H8rRoyvzoUYI26kHmKSJBedn3SQuB&index=32&t=71s),以及有关它的更多详细信息,请参见[这里](https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md)
重要的是要注意,在运行脚本之前,不应该*手动更新*的代码部分。**
重要的是要注意,在运行脚本之前,不应该*手动更新*的代码部分。
该脚本不会解决所有问题,但是它生成的报告将标识那些必须手动解决的问题。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册