You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is tension between ease of extension between backends ↔️ layers.
If things are organized such that each backend is implemented in a single file, then adding a new backend is easy; work from the code for the most similar backend and implement what's there in terms of the new backend. This has the downside that there is no one place to go to see the whole of the implementation of any given layer type.
If things are organized such that each layer is implemented in a single file, then adding a new layer is easy; work from the code of the most similar layer and implement what you need for your new layer type. This has the downside that all the code related to a specific backend is spread throughout the layer files.
In discussion we have decided to prefer (2) above. A machine learner using cortex is more likely to want to implement a new layer than a new backend. In general, we would like to move the implementation of cortex in that direction, simplifying the process of experimenting with new layer types.
The text was updated successfully, but these errors were encountered:
So one way to approach this kind of trade-off is to look at the number of each system we have, and determine the likelihood of our users adding either of them. It seems like given that we have way more layers, and that layers are the more likely component for ourselves and our users to add, then that should take priority in terms of simplifying the extension points.
There is tension between ease of extension between backends↔️ layers.
If things are organized such that each backend is implemented in a single file, then adding a new backend is easy; work from the code for the most similar backend and implement what's there in terms of the new backend. This has the downside that there is no one place to go to see the whole of the implementation of any given layer type.
If things are organized such that each layer is implemented in a single file, then adding a new layer is easy; work from the code of the most similar layer and implement what you need for your new layer type. This has the downside that all the code related to a specific backend is spread throughout the layer files.
In discussion we have decided to prefer (2) above. A machine learner using cortex is more likely to want to implement a new layer than a new backend. In general, we would like to move the implementation of cortex in that direction, simplifying the process of experimenting with new layer types.
The text was updated successfully, but these errors were encountered: