I am learning and loving Grasshopper. Neural networks and machine learning is a really interesting capability, but being new to the topic, i am not sure where i should dive into.
What would be the most straightforward, well explained and documented, popular, plugin to start to learn and implement Neural networks? I have encountered several plugins, LunchBox, Crow, Owl … but i don’t know to which i should dedicate my time.
Would love to hear experiences and get links to helpful resources on this topic.
Well … if you are after AI/NN and the likes the best advise is to start learning C# and bake your beans your way Otherwise you’ll be just a passive observer on things that would remain hidden for ever.
BTW: What has to do LunchBox with NN?
BTW: Tons of NN stuff available around. Like this old and rather classic:
I have been trying to decide what plugin that deals with NN in GH i should learn. LunchBox has some tools of that kind. At the moment I am not looking to have a deep understanding of NN just want to begin to experiment with them superficially to get a sense of how to work with them in GH, i don’t mind having the deep mechanics elude me. There are several plugins for GH and wanted some feedback as to which would be the most high level, well documented one, that i could jump in to easily.
You probably couldn’t directly though (with Rhino implementing IronPython)? I assume Tensor Flow uses e.g. C/C++ heavily on the backend, making it’s implementation in GHPython less than straightforward (though possible). Edit: If I recall, @MateuszZwierzycki managed to pull this off back in the day.
Currently digging with the same problem. Using those plug-ins won’t help you much.
I’m trying to implement accord.NET (seem like a good way to go) mostly because it’s on top of C#. http://accord-framework.net/
Grasshopper1 does not support Machine learning well, it lacks data types, functions, flow types, and parallelization. In my opinion, the best plugin is Owl (wrapping accord.net) since it has added the tensor type allowing clear modelling and has some cool visualization components. However, it is highly limited, because accord.net is very limited, don’t expect to be able to use the latest techniques.
However, in my opinion, you can’t enter ML from scratch with a GH plugin, you simply won’t understand what you’re doing. ML is a paradigm shift in computing, it’s to move from modeling explicitly the solution to modeling systems that try to approach the solution, and like all paradigm shifts, it requires a cognitive shifts, to think in another framework. Then, first, you must learn how it works, you don’t need to try the algorithms by yourself, just learn the framework, then you can play knowing what you do with the libraries.
TensorFlow requires Python 3.5 or greater, unfortunately, IronPython 2.7 is not supported.
Microsoft may have a way to work with Rhino via
I found a decent post with installation code (#3) and a discussion about how Python 2.7 can still do the neural network lifting. Within Anaconda multiple environments can be created to run simultaneously so installs may not need to much modification yet retain capability.
The general consensus seems to be to let 2.7 go. I’m asking more questions to see if there have been any efforts to upgrade that portion of the code into Python 3.5+ versions.
To watch the link with python slowly wither would be a loss to the community.
I think it has been indirectly answered in the previous post by providing the search link. You can use Tensorflow. net and even use a library called sciSharp to get the Pythonic feeling. Whatever can be done in C# can be done with IronPython at some point. Still using a library like Tensorflow doesn’t add much to understand ML. (Although only a few percentage of Tensorflow user actually truly understand ML). By the way, another great starting point is ML. Net which can already be tested. It requires the latest Visual Studio and offers another extremely simple way using basic ML. Anyway, that of course doesn’t solve the problem of finding a meaningful application in the Rhino/GH environment, which is probably the hardest part.
Thank you for the pointers.
We have a more complete library set running through Gh_CPython.
Linking parametric geometry with machine learning using a stable Python interface is good and should be fun.
What does your statement mean? I think we don’t talk about the same.
The point is that IronPython is basically creating C# code with Python (2.7) syntax. This means whenever you want to do something in Rhino ecosystem, you need to look for .Net libraries or wrapper in the first place.
For almost any CPython library, there is an equivalent library. Sure ML and Python is quite famous and the .Net world is a bit behind. But for almost anything there are tons of very good and active alternatives out there.
The drawback of GH_CPython is its lack of interacting with Rhinocommon/Rhinoscriptsyntax which should be a bigger limitation than missing some library functionality if you ask me. Indirectly it shows that you can interface with any language or framework. Its just a matter of effort.
I am using Python 3 within Grasshopper on MacOS for generating sound Impulse Responses using FEM and other a few other stuff.
I run Python 3 using shell commands within Grasshopper IronPython. I use STL and text files to communicate between the two. I have Grasshopper definitions just generating long command lines for the shell.
This has been very useful for me. Also, I this way have no problem with threading for long calculations.