创建操作后添加控制依赖项?

时间:2016-02-04 16:32:12

标签: tensorflow

是否可以在两个操作系统创建之后创建控制依赖关系?我意识到使用tf.control_dependencies可以在执行之前使一个操作等待另一个操作,但是必须在tf.control_dependencies上下文中创建依赖操作。我想首先独立构建两个操作,然后添加依赖项。

2 个答案:

答案 0 :(得分:6)

这可能是一个令人失望的答案,但是在创建TensorFlow Operation之后,无法向TensorFlow Operation添加控件依赖项(或任何其他输入)。一旦创建了张量和操作不可变

一种可能性是克隆应该在适当的控制依赖关系上下文中运行第二个的操作。我们假设您有两个op_first个对象,op_secondop_first,并且您希望op_seconddef first_before_second(op_first, op_second): """Sequence `op_first` before `op_second`. Given two operations, returns a pair of operations with the same behavior except that the first returned operation will execute before the second returned operation. """ with tf.control_dependencies([op_first]): g = tf.get_default_graph() op_second_clone = g.create_op(op_second.type, [in_t for in_t in op_second.inputs], [out_t.dtype for out_t in op_second.outputs], attrs=op_second.node_def.attr, op_def=op_second.op_def) return op_first, op_second_clone 之前运行:

Tensor

类似的修改也可以使这个问题与let arrayofactions if(condition true) { let activation = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Activate", handler: { (action, indexPath) -> Void in // action activate }) activation.backgroundColor = UIColor.lightGrayColor() arrayofactions: Array = [delete, activation] } else { let deactivation = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "De-Activate", handler: { (action, indexPath) -> Void in // action deactivate }) deactivation.backgroundColor = UIColor.lightGrayColor() deactivation: Array = [delete, deactivation] } 个对象相关,但这仍然是读者的练习。

答案 1 :(得分:0)

虽然一般情况下不可行,但您可以稍微修改现有的defmodule AppRouter do use Plug.Router use Plug.ErrorHandler ... def handle_errors(conn, %{kind: _kind, reason: _reason, stack: _stack}) do send_resp(conn, conn.status, "Something went wrong") end end 以强制执行依赖项。例如,您可以向张量添加零: op

如果您的 def first_before_second_num(op_first, op_second): with tf.control_dependencies([op_first]): op_second += 0 return op_second 类似于NoOp,那么您可能希望将其与另一个train_step分组: NoOp