You are viewing a plain text version of this content. The canonical link for it is here.
Posted to discuss-archive@mxnet.apache.org by James Mracek via MXNet Forum <mx...@discoursemail.com.INVALID> on 2020/08/29 18:57:22 UTC

[MXNet Forum] [Gluon] Assertion error for aux state when exporting model with dangling layer


Let's suppose I have a HybridBlock consisting of an MLP model.   The return value of the hybrid_forward method of my model is the pair `(output, final_hidden_layer)`.  This model trains by hooking some loss function up to the `output` as predictions.

After base training, I then create a new model from this HybridBlock by adding an additional layer on top of `final_hidden_layer`, like so:

```
class CalibratedModel(gluon.nn.HybridBlock):
    def __init__(self, model, calibration_layer, model_output_name, prefix=None, params=None):
        super().__init__(prefix=prefix, params=params)
        self.output_idx = model.ordered_output_names.index(model_output_name)
        with self.name_scope():
            self.model = model.model
            self.calibration_layer = calibration_layer

    def hybrid_forward(self, F, *args):
        X = self.model(*args)
        Y = X[self.output_idx]
        return self.calibration_layer(Y)
```
The problem I'm observing is that when I instantiate a `CalibratedModel` and try to call `export()`, I get the following error:
```
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-11-7daab4c36e3a> in <module>
----> 1 cm.export('/ebs/test')

~/.local/lib/python3.6/site-packages/mypackage/Gluon/blocks.py in export(self, path, epoch, remove_amp_cast)
     49 
     50     def export(self, path, epoch=0, remove_amp_cast=True):
---> 51         return self.model.export(path, epoch, remove_amp_cast)
     52 
     53     def getName(self):

~/.local/lib/python3.6/site-packages/mxnet/gluon/block.py in export(self, path, epoch, remove_amp_cast)
   1133                 arg_dict['arg:%s'%name] = param._reduce()
   1134             else:
-> 1135                 assert name in aux_names
   1136                 arg_dict['aux:%s'%name] = param._reduce()
   1137         save_fn = _mx_npx.save if is_np_array() else ndarray.save

AssertionError: 
```
The call to export successfully exports the symbol file, but fails exporting the parameters due to the above assertion.  I believe this is caused by my original model having a "dangling" layer, in some sense, because the layer and parameters that produces `output` are unused.

Have any of you experienced this error before and have a fix available?





---
[Visit Topic](https://discuss.mxnet.io/t/assertion-error-for-aux-state-when-exporting-model-with-dangling-layer/6549/1) or reply to this email to respond.

You are receiving this because you enabled mailing list mode.

To unsubscribe from these emails, [click here](https://discuss.mxnet.io/email/unsubscribe/83ac61f39d450d5da190180dfe9d6922ffadf631da0b4a0c86d070c734a5045d).

[MXNet Forum] [Gluon] Assertion error for aux state when exporting model with dangling layer

Posted by James Mracek via MXNet Forum <mx...@discoursemail.com.INVALID>.

After some searching, the above appears to be a known bug with a fix coming soon:
https://github.com/apache/incubator-mxnet/pull/17970





---
[Visit Topic](https://discuss.mxnet.io/t/assertion-error-for-aux-state-when-exporting-model-with-dangling-layer/6549/2) or reply to this email to respond.

You are receiving this because you enabled mailing list mode.

To unsubscribe from these emails, [click here](https://discuss.mxnet.io/email/unsubscribe/242962e628e95a34c9ffc99db0ec91064882c1550854c56d43d7031b0ed0c565).