rohan843 / dnncase

GNU General Public License v3.0
1 stars 0 forks source link

`Reuse` Block Analysis #16

Closed rohan843 closed 1 year ago

rohan843 commented 1 year ago

We have discussed various details associated with the reuse block. Currently, 3 different issues contain aspects of this discussion. I am listing those issues here and closing them. We can continue a combined discussion on this issue's thread.

The previous issues were:

  1. Improve reuse block
  2. See applicability of reuse block
  3. Can a reuse block have > 1 layers?

Currently we have the following points of concern:

  1. We have to decide if a reuse block should be allowed, in the future, to have more than a single layer/model inside it.
  2. We have to decide how to implement a reuse block that wraps a layer or a model in the case that the wrapped layer or model need more than one input.

For the above, we currently were discussing a package and an unpackage block pair, per reused connection. We need these to group together different inputs and then send them through or receive them from a reuse block. If we do decide to go this way, we will have to see should these 2 new blocks be only attached to a reuse block or be otherwise available as well. We will also have to decide how to make it easy for the user to insert many of these. (We could give an option to the user to have a packaged reuse block or not, or something like this.)

  1. We also wish to decide the schema to use when dealing with reuse blocks. This comes at all levels, starting from the internal node structure (not the rendered display, but the actual stored data format), up to wherever relevant.
  2. We also considered treating reusability as a subtype of layers. This approach, if followed upon, will require us to decide how to give multiple inputs to the layer. We had currently decided not to follow this approach. This might be useful later on though.
  3. We want to find ways of better showing the reuse block on screen, in case the same block is to take inputs from 2 points which are far apart in a DNN. This point does not have a high priority, as this doesn't occur in normal DNNs.