TensorFlow — 软件工程的范围

如何像软件工程师一样构建 TensorFlow 图。

来源:Another Datum

您已经完成了模型的训练,现在是时候了解一下它学到了什么。您决定哪个张量应该有趣,然后在代码中查找它 - 找出它的名字。然后你突然想到 - 你忘了给它起个名字。您还忘了用命名范围包装逻辑代码块。这意味着您将很难获得对张量的引用。它适用于 Python 脚本和 TensorBoard:

您能看到在张量海洋中迷失的那个小红圈吗?找到它很难……

真扫兴!如果它看起来更像这样,那就更好了:

这更像它!形成逻辑单元的每一组张量都包装在命名范围内。

为什么不能以类似于您的代码的方式自动构建图形?我的意思是,很有可能你没有使用单个函数构建模型,对吧?你的代码库包含多个函数——每个函数都形成一个逻辑单元,值得拥有自己的命名范围!

假设你有一个张量 x,它由函数 f 定义,而函数 f 又被 g 调用。这意味着在编写代码时,你脑海中有这个逻辑结构:g -> f -> x。如果模型能够自动构建,使得张量的名称为 g/f/x,那不是很好吗?

x f g g f x g/f/x

想想看,这很简单。您所要做的就是检查所有函数并添加一行代码:

def f(): with tensorflow.name_scope(‘f’): # 定义张量
def f(): with tensorflow.name_scope(‘f’): # 定义张量 def f(): with tensorflow.name_scope(‘f’): # 定义张量

那么这种方法有什么问题?

  • 函数名称 f 出现了两次 — 既在函数声明中,又作为 tensorflow.name_scope 的参数出现。也许下周您会将函数名称更改为更有意义的名称,比如说 foo。不幸的是,您可能会忘记更新范围的名称!
  • f tensorflow.name_scope foo f f tensorflow.name_scope import re def ( f ):