提交 2e693214 编写于 作者: W wizardforcel

2020-08-04 21:29:10

上级 63877f73
......@@ -12,7 +12,7 @@
+ [十一、TF 服务:生产中的 TensorFlow 模型](ch11.md)
+ [十二、迁移学习和预训练模型](ch12.md)
+ [十三、深度强化学习](ch13.md)
+ [十四、生成对抗网络](ch14.md)
+ [十四、生成对抗网络](ch14.md)
+ [十五、使用 TensorFlow 集群的分布式模型](ch15.md)
+ [十六、移动和嵌入式平台上的 TensorFlow 模型](ch16.md)
+ [十七、R 中的 TensorFlow 和 Keras](ch17.md)
......
......@@ -831,7 +831,7 @@ physical_device_desc: "device: 0, name: Quadro P5000, pci bus id: 0000:01:00.0,
]
```
TensorFlow 中的设备用字符串 `/device:<device_type>:<device_idx>`标识。在上述输出中, `CPU``GPU` 表示器件类型,`0`表示器件索引。
TensorFlow 中的设备用字符串 `/device:<device_type>:<device_idx>`标识。在上述输出中, `CPU``GPU` 表示器件类型,`0`表示器件索引。
关于上述输出需要注意的一点是它只显示一个 CPU,而我们的计算机有 8 个 CPU。原因是 TensorFlow 隐式地在 CPU 单元中分配代码,因此默认情况下 `CPU:0` 表示 TensorFlow 可用的所有 CPU。当 TensorFlow 开始执行图时,它在一个单独的线程中运行每个图中的独立路径,每个线程在一个单独的 CPU 上运行。我们可以通过改变 `inter_op_parallelism_threads`的数量来限制用于此目的的线程数。类似地,如果在独立路径中,操作能够在多个线程上运行,TensorFlow 将在多个线程上启动该特定操作。可以通过设置 `intra_op_parallelism_threads`的数量来更改此池中的线程数。
......@@ -949,7 +949,7 @@ config.allow_soft_placement = True
当您开始运行 TensorFlow 会话时,默认情况下它会抓取所有 GPU 内存,即使您将操作和变量仅放置在多 GPU 系统中的一个 GPU 上也是如此。如果您尝试同时运行另一个会话,则会出现内存不足错误。这可以通过多种方式解决:
* 对于多 GPU 系统,请设置环境变量`CUDA_VISIBLE_DEVICES=&lt;list of device idx&gt;`
* 对于多 GPU 系统,请设置环境变量`CUDA_VISIBLE_DEVICES=<list of device idx>`
```py
os.environ['CUDA_VISIBLE_DEVICES']='0'
......
......@@ -8,7 +8,7 @@ TensorFlow 有几个高级库和接口(API),允许我们使用 TF Learn,
* TF Slim
* TFLearn
* PrettyTensor
* 十四行诗
* Sonnet
我们将提供使用所有五个库构建 MNIST 数据集模型的示例。当我们从第 4 章开始介绍模型的细节时,不要担心理解模型的细节。
......
......@@ -234,7 +234,7 @@ layer1_b = tf.Variable(tf.random_normal([32]),name='l1_b')
```
* 接下来,用 `tf.nn.conv2d`函数定义卷积层。函数参数`stride`定义了内核张量在每个维度中应该滑动的元素。维度顺序由`data_format`确定,可以是`'NHWC'``'NCHW'`(默认为`'NHWC'`)。
通常,`stride`中的第一个和最后一个元素设置为“1”。函数参数`padding`可以是`SAME``VALID``SAME` `padding`表示输入将用零填充,以便在卷积后输出与输入的形状相同。使用`tf.nn.relu()`函数添加`relu`激活:
通常,`stride`中的第一个和最后一个元素设置为 1。函数参数`padding`可以是`SAME``VALID``SAME` `padding`表示输入将用零填充,以便在卷积后输出与输入的形状相同。使用`tf.nn.relu()`函数添加`relu`激活:
```py
layer1_conv = tf.nn.relu(tf.nn.conv2d(x_,layer1_w,
......
......@@ -22,9 +22,9 @@
* **去噪自编码器**(DAE):在 DAE 架构中,输入带有随机噪声。 DAE 重新创建输入并尝试消除噪音。 DAE 中的损失函数将去噪重建输出与原始未损坏输入进行比较。
* **卷积自编码器**(CAE):前面讨论过的自编码器使用全连接层,这种模式类似于多层感知机模型。我们也可以使用卷积层而不是完全连接或密集层。当我们使用卷积层来创建自编码器时,它被称为卷积自编码器。作为一个例子,我们可以为 CAE 提供以下层:
**输入 - &gt;卷积 - &gt;池化 - &gt;卷积 - &gt;池化 - &gt;输出
**输入 -> 卷积 -> 池化 -> 卷积 -> 池化 -> 输出**
**第一组卷积和池化层充当编码器,将高维输入特征空间减少到低维特征空间。第二组卷积和池化层充当解码器,将其转换回高维特征空间。
第一组卷积和池化层充当编码器,将高维输入特征空间减少到低维特征空间。第二组卷积和池化层充当解码器,将其转换回高维特征空间。
* **变分自编码器**(VAE):变分自编码器架构是自编码器领域的最新发展。 VAE 是一种生成模型,即它产生概率分布的参数,从中可以生成原始数据或与原始数据非常相似的数据。
......
......@@ -86,7 +86,7 @@ EnvSpec(Amidar-v4)
`env`对象表示的每个环境都有一个标准化的接口,例如:
* 通过传递 id 字符串,可以使用`env.make(&lt;game-id-string&gt;)`函数创建`env`对象。
* 通过传递 id 字符串,可以使用`env.make(<game-id-string>)`函数创建`env`对象。
* 每个`env`对象包含以下主要函数:
* `step()`函数将操作对象作为参数并返回四个对象:
* 观察:由环境实现的对象,代表对环境的观察。
......@@ -862,5 +862,5 @@ Policy:policy_q_nn, Min reward:8.0, Max reward:150.0, Average reward:41.27
我们还了解了 OpenAI Gym,这是一个框架,提供了一个模拟许多流行游戏的环境,以实现和实践强化学习算法。我们谈到了深层强化学习概念,我们鼓励您探索专门写有关强化学习的书籍,以深入学习理论和概念。
强化学习是一种先进的技术,你会发现它常用于解决复杂的问题。在下一章中,我们将学习另一系列先进的深度学习技术:生成对抗网络。
强化学习是一种先进的技术,你会发现它常用于解决复杂的问题。在下一章中,我们将学习另一系列先进的深度学习技术:生成对抗网络。
# 十四、生成对抗网络
# 十四、生成对抗网络
生成模型被训练以生成与他们训练的数据类似的更多数据,并且训练对抗模型以通过提供对抗性示例来区分真实数据和假数据。
**生成对抗网络****GAN**)结合了两种模型的特征。 GAN 有两个组成部分:
**生成对抗网络****GAN**)结合了两种模型的特征。 GAN 有两个组成部分:
* 学习如何生成类似数据的生成模型
* 一种判别模型,用于学习如何区分真实数据和生成数据(来自生成模型)
......@@ -16,12 +16,12 @@ GAN 已成功应用于各种复杂问题,例如:
在本章中,我们将学习以下主题,以学习如何在 TensorFlow 和 Keras 中实现 GAN:
* 生成对抗网络
* 生成对抗网络
* TensorFlow 中的简单 GAN
* Keras 的简单 GAN
* 具有 TensorFlow 和 Keras 的深度卷积 GAN
# 生成对抗网络 101
# 生成对抗网络 101
如下图所示,Generative Adversarial Networks(通常称为 GAN)有两个同步工作模型,用于学习和训练复杂数据,如图像,视频或音频文件:
......
......@@ -88,7 +88,7 @@ workers = [
clusterSpec = tf.train.ClusterSpec({'ps': ps, 'worker': workers})
```
正如您在代码中的注释中所看到的,任务通过`/job:&lt;job name&gt;/task:&lt;task index&gt;`标识。
正如您在代码中的注释中所看到的,任务通过`/job:<job name>/task:<task index>`标识。
# 创建服务器实例
......
......@@ -256,7 +256,7 @@ $ toco
2. 查看 TensorFlow 仓库,并应用上一篇技巧中提到的补丁。我们假设您检查了主目录中`tensorflow` 文件夹中的代码。
1. 使用 Android Studio,从路径 `~/tensorflow/tensorflow/contrib/lite/java/demo`打开 Android 项目。如果它抱怨缺少 SDK 或 Gradle 组件,请安装这些组件并同步 Gradle。
2. 构建项目并使用 API​​ &gt; 21 在虚拟设备上运行它。
2. 构建项目并使用`API​​ > 21`在虚拟设备上运行它。
我们收到了以下警告,但构建成功了。 如果构建失败,您可能希望解决警告:
......
......@@ -186,7 +186,7 @@ tfs.add_tensor_filter('has_inf_or_nan_filter', tfd.has_inf_or_nan)
```
1. 现在,当代码执行`tfs.run()`时,调试器将在控制台中启动调试器接口,您可以在其中运行各种调试器命令来监视张量值。
2. 我们提供了在`ch-18_mnist_tfdbg.py` 文件中试用`tfdbg`的代码。当我们用`python3`执行代码文件时,我们看到`tfdbg`控制台:&lt; / li &gt;
2. 我们提供了在`ch-18_mnist_tfdbg.py` 文件中试用`tfdbg`的代码。当我们用`python3`执行代码文件时,我们看到`tfdbg`控制台:
```py
python3 ch-18_mnist_tfdbg.py
......@@ -194,7 +194,7 @@ python3 ch-18_mnist_tfdbg.py
![](img/028e301e-7560-4cc4-bc10-63625534c2c3.png)
1.`tfdbg&gt;` 提示符下输入命令`run -f has_inf_or_nan` 。代码在第一个周期后中断,因为我们使用`np.inf`值填充数据:
1.`tfdbg>` 提示符下输入命令`run -f has_inf_or_nan` 。代码在第一个周期后中断,因为我们使用`np.inf`值填充数据:
![](img/5d59edaa-a409-4f87-ba9f-c690fbbe820a.png)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册