You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mxnet.apache.org by "Junru Shao (JIRA)" <ji...@apache.org> on 2018/08/08 08:03:00 UTC
[jira] [Created] (MXNET-790) Correct misusage of `CutSubgraph` in 3
control flow operations
Junru Shao created MXNET-790:
--------------------------------
Summary: Correct misusage of `CutSubgraph` in 3 control flow operations
Key: MXNET-790
URL: https://issues.apache.org/jira/browse/MXNET-790
Project: Apache MXNet
Issue Type: Improvement
Reporter: Junru Shao
This PR corrects the usage of `CutSubgraph`.
`CutSubgraph` consumes a Symbol `s`, and
1) Assumes the attribute `__subgraph_name__` of `s->outputs[0].node` is the name of the subgraph
2) Assumes the boundary of this subgraph be nodes who has at least one immediate predecessor whose attribute `__subgraph_name__` is not the name of the subgraph
3) Duplicates and puts these immediate predecessors into this subgraph
Calling `CutSubgraph` without very special care will cause disastrous consequences, often when `s->outputa[0].node` has an improper name. For example, in control flow operators, if we write a function `lambda: x` which captures an outside symbol `x` (so the attribute of `x` is not desirable), and an operator passes `x` into `CutGraph` as the first output of subgraph, the entire procedure breaks. Without copying and manually correcting such symbols, this will happen anywhere and be very hard to debug. An example that causes this bug could be https://github.com/dmlc/gluon-nlp/pull/233 in which the `pred` I pass to `cond` is calculated outside the subgraph.
This bug affects all three control flow operators, `foreach`, `while_loop` and `cond`.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@mxnet.apache.org
For additional commands, e-mail: issues-help@mxnet.apache.org