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