页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

本文档提供了有关TensorFlow的一些常见问题的答案。如果您有一个这里没有涵盖的问题,您可以在TensorFlow 社区资源之一找到答案。

功能和兼容性

我可以在多台电脑上运行分布式培训吗?

是! TensorFlow 在0.8版本中获得了 对分布式计算支持。TensorFlow现在支持一台或多台计算机上的多个设备(CPU和GPU)。

TensorFlow是否与Python 3配合使用?

从0.6.0发布时间(2015年12月初)开始,我们确实支持Python 3.3+。

 

构建TensorFlow图

另请参阅有关构建图形的 API文档

为什么不c = tf.matmul(a, b)立即执行矩阵乘法?

在TensorFlow Python API ab,,和,c是 tf.Tensor对象。一个Tensor对象是一个象征性的手柄操作的结果,但实际上并不持有该操作的输出值。相反,TensorFlow鼓励用户建立复杂的表达(如整个神经网络及其渐变)作为数据流图。然后,将整个数据流图的计算(或其子图)卸载到TensorFlow中,该TensorFlow tf.Session能够比执行逐个操作更有效地执行整个计算。

设备如何命名?

支持的设备名称是"/device:CPU:0"(或"/cpu:0")用于CPU设备,"/device:GPU:i"(或"/gpu:i")用于第i个GPU设备。

如何在特定的设备上进行操作?

要在设备上放置一组操作,请在with tf.device(name):上下文中创建它们 。有关使用 TensorFlow的 GPU的操作方法文档,了解TensorFlow如何为设备分配操作的详细信息,以及使用多个GPU的示例模型的 CIFAR-10教程

可用的不同类型的张量是什么?

TensorFlow支持各种不同的数据类型和张量形状。有关详细信息请参阅 排名,形状和类型参考

 

运行TensorFlow计算

另请参阅运行图形的 API文档

与饲养和占位符有什么协议?

Feeding是TensorFlow Session API中的一种机制,允许您在运行时将不同的值替换为一个或多个张量。的feed_dict 到论点tf.Session.run是,映射一个字典tf.Tensor对象numpy的阵列(和一些其他类型的),其将被用作在步骤的执行那些张量的值。

通常,您会有一些始终被馈送的张量,如输入。的 tf.placeholder运算允许定义该张量必须被馈送,并且可选地允许您约束它们的形状为好。参见 初学者的MNIST教程,了解如何使用占位符和馈送来提供神经网络的训练数据。

是有什么区别Session.run()Tensor.eval()

如果t是一个tf.Tensor对象, tf.Tensor.eval是简写 tf.Session.run(其中sess是当前tf.get_default_session的代码以下两个片段是等价的:

# Using `Session.run()`.
sess = tf.Session()
c = tf.constant(5.0)
print(sess.run(c))

# Using `Tensor.eval()`.
c = tf.constant(5.0)
with tf.Session():
  print(c.eval())

在第二个例子中,会话充当 上下文管理器,其作用是将其作为with块的生命周期的默认会话进行安装。上下文管理器方法可以为简单的用例(如单元测试)提供更简洁的代码; 如果您的代码处理多个图形和会话,则可能会更直接地进行显式调用 Session.run()

会话有一生吗?中等张量呢?

会议可以根据自己的资源,如 tf.Variable, tf.QueueBase和 tf.ReaderBase; 这些资源可以使用大量的内存。这些资源(和相关联的内存)在会话关闭时被释放,通过调用 tf.Session.close

作为呼叫的一部分创建的中间张量将在呼叫 Session.run()结束时或之前被释放。

运行时并行执行图形执行的部分吗?

TensorFlow运行时可以跨许多不同的维度并行执行图形执行:

  • 个人操作具有并行实现,在CPU中使用多个内核,或者在GPU中使用多个线程。
  • TensorFlow图中的独立节点可以在多个设备上并行运行,这样可以使用多个GPU加速 CIFAR-10训练
  • 会话API允许多个并发步骤(即tf.Session.run并行调用), 这使得运行时可以获得更高的吞吐量,如果单步不使用计算机中的所有资源。

TensorFlow支持哪些客户端语言?

TensorFlow旨在支持多种客户端语言。目前,最受支持的客户端语言是Python。用于执行和构建图形的实验接口也可用于C ++JavaGo

TensorFlow还有一个 基于C的客户端API 来帮助构建更多客户端语言的支持。我们邀请新语言绑定的贡献。

TensorFlow是否使用我机器上可用的所有设备(GPU和CPU)?

TensorFlow支持多个GPU和CPU。有关使用 TensorFlow的 GPU的操作方法文档,了解TensorFlow如何为设备分配操作的详细信息,以及使用多个GPU的示例模型的 CIFAR-10教程

请注意,TensorFlow仅使用计算能力大于3.5的GPU设备。

为什么Session.run()在使用阅读器或队列时挂起?

tf.ReaderBase和 tf.QueueBase类提供一种能够特别行动阻止直到输入(或自由空间中有界队列)变为可用。这些操作允许您构建复杂的 输入管道,以使TensorFlow计算更复杂一些。有关使用QueueRunner对象驱动队列和读者 的更多信息,请参阅how-to文档 。

 

变量

又见如何做的文档变量 和变量的作用域和 变量的API文档

变量的生命周期是多少?

当您tf.Variable.initializer 在会话中首次运行该变量的操作时,将创建一个变量 。当它被破坏tf.Session.close

变量在同时访问时的行为如何?

变量允许并发读写操作。如果同时更新,则从变量读取的值可能会更改。默认情况下,允许对变量进行并发分配操作,而不会互相排斥。要在分配变量时获取锁,请传递use_locking=True给 tf.Variable.assign

 

张量形状

另见 tf.TensorShape

如何在Python中确定张量的形状?

在TensorFlow中,张量具有静态(推测)形状和动态(真实)形状。可以使用以下tf.Tensor.get_shape 方法读取静态形状 :该形状是从用于创建张量的操作推断的,可能 部分完成。如果静态形状没有完全定义,则Tensor t可以通过评估来确定a的动态形状tf.shape(t)

是有什么区别x.set_shape()x = tf.reshape(x)

tf.Tensor.set_shape方法更新Tensor对象的静态形状,通常用于在不能直接推断的情况下提供其他形状信息。它不会改变张量的动态形状。

tf.reshape操作创建一个具有不同动态形状的新张量。

如何构建一个适用于可变批量大小的图表?

建立一个适用于可变批量大小的图表通常很有用,例如,可以使用相同的代码(mini-)批次训练和单实例推理。生成的图可以 保存为协议缓冲区 并 导入另一个程序

构建可变大小的图时,最重要的是不要将批量大小编码为Python常量,而是使用符号 Tensor来表示它。以下提示可能很有用:

 

TensorBoard

如何可视化TensorFlow图?

参见图形可视化教程

向TensorBoard发送数据的最简单的方法是什么?

向TensorFlow图添加摘要操作,并将这些摘要写入日志目录。然后,启动TensorBoard

python tensorflow/tensorboard/tensorboard.py --logdir=path/to/log-directory
有关更多详细信息,请参阅 Summaries和TensorBoard教程

每次启动TensorBoard时,我都会得到一个网络安全弹出窗口!

您可以通过标记--host = localhost将本地主机的TensorBoard更改为“0.0.0.0”。这应该安静任何安全警告。

 

扩展TensorFlow

另请参阅向TensorFlow 添加新操作的how- to文档

我的数据是自定义格式。如何使用TensorFlow读取它?

处理自定义格式的数据有两个主要选项。

更容易的选择是在Python中编写解析代码,将数据转换为numpy数组,然后tf.placeholder为该数据提供 一个张量。有关详细信息,请参阅 使用占位符进行输入文档。这种方法很容易启动和运行,但解析可能是性能瓶颈。

更有效的选择是 添加一个用C ++编写的解析您的数据格式的新操作处理新数据格式的 指南有关于执行此操作的步骤的更多信息。

如何定义一个可变数量的输入的操作?

TensorFlow操作注册机制允许您定义作为单张量的输入,具有相同类型的张量列表(例如,将可变长度的张量列表相加在一起)或不同类型的张量列表(例如当将一个元组元组入队时)。有关如何使用输入或输出列表添加操作,请参阅how-to文档, 以获取有关如何定义这些不同输入类型的更多详细信息。

 

混杂

什么是TensorFlow的编码风格约定?

TensorFlow Python API遵守 PEP8惯例。*特别地,我们使用CamelCase类的名称,以及snake_case函数,方法和属性的名称。我们还坚持使用 Google Python风格的指南

TensorFlow C ++代码基础遵循 Google C ++风格指南

*除了一个例外:我们使用2空格缩进而不是4空格缩进。)

 

  • 无标签