CNTK:条件执行

时间:2018-02-06 12:06:42

标签: python python-3.x neural-network cntk

是否可以创建"条件" CNTK中的网络并仅根据另一个输入变量将其应用于其中一个输入? 请参阅以下代码:

a_in = ct.input_variable(shape=[16,16])
b_in = ct.input_variable(shape=[16,16])
flag = ct.input_variable(shape=[])

a_branch = ct.layers.Sequential([...])
b_branch = ct.layers.Sequential([...])

sel_branch = ct.element_select(flag, a_branch, b_branch)

out = sel_branch(a_in, b_in)

然而,由于sel_branch需要3个参数而不是a_branchb_branch所请求的参数,因此这不起作用(这完全正确,因为我在这里使用{ {1}}以错误的方式)

请记住,目标是避免执行两个分支,

1 个答案:

答案 0 :(得分:1)

答案是否定的,此时CNTK中没有条件执行。一般情况是,flag是一个向量/张量,其中一些元素为0,其他元素为1.当所有元素具有相同的值但未实现时,有明显的优化。但是,即使它被实现,sel_branch的签名仍然是它需要3个参数,因为这是一个“编译时”属性,而上述优化只能在运行时确定。即使在您的标志是标量的情况下,它可能在一个批次中为0而在另一个批次中为1,并且sel_branch的签名不能在批次之间更改。