阅读(17.3k) 书签 (0)

TensorFlow图形编辑器(contrib)

2019-01-31 18:09 更新

TensorFlow 图形编辑器库允许就地修改现有的tf.Graph实例。

TensorFlow 图像编辑器库概览

附加新节点是 TensorFlow 核心库允许的唯一图形编辑操作。图形编辑器库试图允许其他类型的编辑操作,即重新路由和转换。

  • 重路由(reroute)是一种本地操作,包括重新插入现有张量(图形的边缘)。操作(节点)不会被此操作修改。例如,可以使用重路由来插入添加噪声的操作来代替现有的张量。
  • 转换(transform)是将图形转换为另一个图形的全局操作。默认情况下,转换是一个简单的副本,但它可以被定制以实现其他目标。例如,可以将图形转换成另一个,其中在特定类型的所有操作之后添加噪声。

重要:必须完成使用图形编辑器就地修改图形offline,即没有任何活动会话。

当然,新的操作可以在线附加,但是图形编辑器的特定操作(如重新路由和转换)目前只能脱机完成。

以下是您无法执行的操作的示例:

  • 构建图表
  • 创建会话并运行图表
  • 使用图形编辑器修改图形
  • 使用same以前创建的会话重新运行图

要编辑已经运行的图形,请按照下列步骤操作:

  • 构建图表
  • 创建会话并运行图表
  • 保存图状态并终止会话
  • 使用图形编辑器修改图形
  • 创建一个新的会话并恢复图形状
  • 用新创建的会话重新运行图

请注意,此过程会花费很多,因为必须在进行任何修改后创建新会话。除此之外,需要时间,因为整个图形状态必须被保存并重新恢复。

子图

图形编辑器库中的大部分功能都在子图上运行。更准确地说,它们作为 SubGraphView 类的输入参数实例(或任何可以转换为它的东西),这样做允许相同的功能在单个操作以及任何大小的子图形上透明地操作。

可以通过几种方式创建子图:

  • 使用操作列表:
my_sgv = ge.sgv ( ops )
  • 从名称范围:
my_sgv = ge.sgv_scope (“foo/bar” ,graph = tf.get_default_graph ())
  • 使用正则表达式:
my_sgv = ge .SGV (“foo/.*/.*read$” ,graph =tf.get_default_graph ())

请注意,图形编辑器旨在同时操作多个图形,通常在转换或复制操作期间。为此,为避免任何混淆,绝对不会使用默认图形,必须明确地给出要运行的图形。这就是graph=tf.get_default_graph() 在上面代码片段中使用的原因。

TensorFlow 模块概述

  • util:实用功能
  • select:TensorFlow 张量和操作的各种选择方法
  • match:TensorFlow 图匹配。将其视为图形的正则表达式(但尚未完成)
  • reroute:将张量重新路由到不同的消费操作的各种方法,如 swap 或 reroute_a2b
  • subgraph:SubGraphView 类,它可以在 TensorFlow 中进行子图操作 tf.Graph
  • edit:在子图上运行的各种编辑功能,如分离,连接或旁路。
  • transform:Transformer 类,它能够将子图转换(或简单地复制)到另一个子图中

模块:util

  • tf.contrib.graph_editor.make_list_of_op
  • tf.contrib.graph_editor.get_tensors
  • tf.contrib.graph_editor.make_list_of_t
  • tf.contrib.graph_editor.get_generating_ops
  • tf.contrib.graph_editor.get_consuming_ops
  • tf.contrib.graph_editor.ControlOutputs
  • tf.contrib.graph_editor.placeholder_name
  • tf.contrib.graph_editor.make_placeholder_from_tensor
  • tf.contrib.graph_editor.make_placeholder_from_dtype_and_shape

模块:选择

  • tf.contrib.graph_editor.filter_ts
  • tf.contrib.graph_editor.filter_ts_from_regex
  • tf.contrib.graph_editor.filter_ops
  • tf.contrib.graph_editor.filter_ops_from_regex
  • tf.contrib.graph_editor.get_name_scope_ops
  • tf.contrib.graph_editor.check_cios
  • tf.contrib.graph_editor.get_ops_ios
  • tf.contrib.graph_editor.compute_boundary_ts
  • tf.contrib.graph_editor.get_within_boundary_ops
  • tf.contrib.graph_editor.get_forward_walk_ops
  • tf.contrib.graph_editor.get_backward_walk_ops
  • tf.contrib.graph_editor.get_walks_intersection_ops
  • tf.contrib.graph_editor.get_walks_union_ops
  • tf.contrib.graph_editor.select_ops
  • tf.contrib.graph_editor.select_ts
  • tf.contrib.graph_editor.select_ops_and_ts

模块:子图

  • tf.contrib.graph_editor.SubGraphView
  • tf.contrib.graph_editor.make_view
  • tf.contrib.graph_editor.make_view_from_scope

模块:重新路由

  • tf.contrib.graph_editor.reroute.swap_ts
  • tf.contrib.graph_editor.reroute.reroute_ts
  • tf.contrib.graph_editor.reroute.swap_inputs
  • tf.contrib.graph_editor.reroute.reroute_inputs
  • tf.contrib.graph_editor.reroute.swap_outputs
  • tf.contrib.graph_editor.reroute.reroute_outputs
  • tf.contrib.graph_editor.reroute.swap_ios
  • tf.contrib.graph_editor.reroute.reroute_ios
  • tf.contrib.graph_editor.reroute.remove_control_inputs
  • tf.contrib.graph_editor.reroute.add_control_inputs

模块:编辑

  • tf.contrib.graph_editor.detach_control_inputs
  • tf.contrib.graph_editor.detach_control_outputs
  • tf.contrib.graph_editor.detach_inputs
  • tf.contrib.graph_editor.detach_outputs
  • tf.contrib.graph_editor.detach
  • tf.contrib.graph_editor.connect
  • tf.contrib.graph_editor.bypass

模块:转换

  • tf.contrib.graph_editor.replace_t_with_placeholder_handler
  • tf.contrib.graph_editor.keep_t_if_possible_handler
  • tf.contrib.graph_editor.assign_renamed_collections_handler
  • tf.contrib.graph_editor.transform_op_if_inside_handler
  • tf.contrib.graph_editor.copy_op_handler
  • tf.contrib.graph_editor.Transformer
  • tf.contrib.graph_editor.copy
  • tf.contrib.graph_editor.copy_with_input_replacements
  • tf.contrib.graph_editor.graph_replace

有用的别名

  • tf.contrib.graph_editor.ph
  • tf.contrib.graph_editor.sgv
  • tf.contrib.graph_editor.sgv_scope