Description
The current edge system does not track naming consistently across multiple edges originating from same handle. Furthermore, complex modules require handles with independent shape_compute functions. This issue covers a revision of edge/handle architecture which makes shape propagation more flexible and generalized.
Tasks
- Implement consistent edge naming:
- All edges that originate from the same handle should share a linked name or naming group
- Edge metadata should indicate: origin handle, target handle, origin node, target node.
- Create a
Handle class:
- Accepts and optional
handle_shape_compute function.
- Falls back to class default
shape_compute when none is provided
- Alternative implementation could include a
HandleSchema of the class which describes the construction of Handles by the CreateLayerComponent factory.
- Extend shape propagation:
- Multi-output modules should have multiple handles with independent
handle_shape_compute functions.
- shape computation and verification systems should be adapted to reflect this change.
Expected Outcomes
- Edges visually and internally show consistent names for handles.
- for a group of edges originating from the same handle, changing name of one edge, changes the names of other edges instantly.
- if a multi-output module cannot be found in PyTorch documentation, create a dummy module which simulates this behavior by combining functionalities of 2 other layers (e. g. by passing an image tensor, the node outputs its flattened dimensions as well as its convolutional output.) Demonstrate that all systems can handle this new module
- Multi-output layers compute shapes correctly for each output handle independently.
Description
The current edge system does not track naming consistently across multiple edges originating from same handle. Furthermore, complex modules require handles with independent
shape_computefunctions. This issue covers a revision of edge/handle architecture which makes shape propagation more flexible and generalized.Tasks
Handleclass:handle_shape_computefunction.shape_computewhen none is providedHandleSchemaof the class which describes the construction of Handles by theCreateLayerComponentfactory.handle_shape_computefunctions.Expected Outcomes