Comments (3)
I see how it would make sense to have more meaningful names via the from_list
constructor.
I'm not sure I'm a fan of the indexing, though. Doesn't that imply there is an ordering based on each node type? That dense
comes before dense_1
?
What about retaining the index across node types? Given the graph is constructed from a list, wouldn't it make sense to have a graph Linear -> Linear
look like this? Input_0
-> Linear_1
-> Linear_2
-> Output_3
?
Concretely, it could look something like this:
return NIRGraph(
nodes={f"{type(n).__name__}_{str(i)}": n for i, n in enumerate(nodes)},
edges=[(str(i), str(i + 1)) for i in range(len(nodes) - 1)],
)
from nir.
Thank you for your proposal, that is of course another option. That has the nice benefit of not requiring a per-node-type counter.
However, it might also get confusing if you have a graph Dense->LIF->Dense. Then you would have Input_0
->Dense_1
->LIF_2
->Dense_3
->Output_4
, with Dense_1
and Dense_3
, but no Dense_2
.
In the Tensorflow-like naming, that would be input
->dense
->lif
->dense_1
->output
.
I do not see the ordering implication as an issue here. But maybe that is also because I am used to the way Tensorflow does the default naming. Also this default naming is only for the from_list which can only create a sequential graph, giving a deterministic naming.
Addendum: In your proposal the edges also need the changed names :)
return NIRGraph(
nodes={f"{type(n).__name__}_{str(i)}": n for i, n in enumerate(nodes)},
edges=[(f"{type(nodes[i]).__name__}_{str(i)}", f"{type(nodes[i+1]).__name__}_{str(i)}") for i in range(len(nodes) - 1)],
)
from nir.
I honestly don't have strong opinions here. I can see both systems working. If you're happy with the Tensorflow style, I would be fine to sign off on that :-)
It's definitely better than status quo!
from nir.
Related Issues (20)
- Notebook docs run with wrong dependencies
- Comparison of two nodes fails HOT 8
- black and docformatter conflict.
- Discrepancy between Readme and docs on supported projects HOT 4
- Misleading method name `from_list` HOT 8
- Unify version tag and automate release
- IR for SumPool2d
- Poor code design pattern for serializing/deserializing HOT 2
- Disambiguation input/output shapes HOT 5
- Conv2D misleading default input_type and output_type HOT 1
- Remove input_shape from Conv1d/2d
- Flatten input_type is not necessary HOT 2
- Suggestion: add input_type argument to nir.from_list
- infer_type fails with Tuple index out of range error. HOT 9
- meta-data in NIR nodes HOT 3
- LICENSE mismatch HOT 3
- Add AvgPool2D
- Backwards-compatibility of imports broken after refactoring HOT 1
- 'int' object has no attribute 'item' on conv shapes calculation HOT 5
- Remove notebooks and paper data from pypi release HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nir.