9 ms·
Propel – Machine learning for Javascript
- randomerr 9y agoIs there a practical use case for this system? It looks great. I want to parse out textual data and this system seems to only work on numbers sets.
- metakermit 9y agoI guess it's still work in progress, but they are probably aiming to achieve something in the direction of the scientific Python stack (i.e. Jupyter, TensorFlow and the like). Maybe starting with a subset of methods useful in ML. It will be interesting to see how this scientific JS toolchain evolves. Would be fun to get a more feature-complete Propel ML working with Mike Bostock's Observable project: https://beta.observablehq.com/ https://beta.observablehq.com/
- anonytrary 9y ago> achieve something in the direction of the scientific Python stack (i.e. Jupyter, TensorFlow and the like). Seems to be quite far away. IIRC, there are a lot of immature, scattered math libs for JS. Most of the ML libs I've seen are proof-of-concept, like brain.js or synapse. Those libs seem to implement basic perceptrons and other textbook examples, but not much else.
- zawerf 9y agoI was going to say that this seems like the same as deeplearn.js[0], but it turns out this is built on top of it. So I guess the real feature is cross-platform compatibility between node and browser? [0] https://github.com/PAIR-code/deeplearnjs https://github.com/PAIR-code/deeplearnjs
- rwieruch 9y agoThat's totally exciting! Thanks to the author for enriching the ML ecosystem in JavaScript :) I didn't explore the full API yet, but already seeing the plotting functionality for functions is a tremendous win for ML in JavaScript. In case anyone is interested in doing ML in JS in 2018, there exists a larger article which I wrote a couple of weeks ago that tries to convey the state of the art of Machine Learning in JavaScript. [0] - [0] https://www.robinwieruch.de/machine-learning-javascript-web-developers/ https://www.robinwieruch.de/machine-learning-javascript-web-...
- tail-recursion 9y agoIf I had heard someone talking about ML in Javascript a few years ago I would think it was a joke, probably because my professors seem to love to make fun of javascript, PHP.
- Can_Not 9y agohttps://github.com/php-ai/php-ml https://github.com/php-ai/php-ml
- dustinmoorenet 9y agoIt binds directly to the TensorFlow C API, if you run it in NodeJS, which is awesome. I get tired of having to setup a python env anytime I want to play around with ML.
- Phrodo_00 9y agoSo now you'll have to setup a nodeJS env? I don't really see the difference.
- sgslo 9y agoSetting up a node env is arguably easier. An installer from the NodeJS downloads page includes both the Node runtime and NPM. One executable to get started. Python, on the other hand, requires a python installer, then a pip or conda installation script. Not to mention python vs python3 decisions.
- Phrodo_00 9y agoBut some version python comes pretty much with every system, then you only need to install tensorflow with pip.
- kalefranz 9y agoBest practice is to leave the system python alone. If you have to put sudo in front of pip, you're probably doing it wrong.
- Phrodo_00 9y agoI agree with that, but for a beginner, using `pip -u` is less friction. They can use virtualenvs for their second project.
- fnord123 9y agoI've come across benchmarks claiming a 7x speedup if you build Tensorflow from source. So you basically don't want to install using a binary wheel.
- metakermit 9y agoWonder if JS notebook environments like this one, Observable and runkit.com will eventually all consolidate and (hopefully) integrate with Jupyter Notebook / Lab https://jupyter.org/ https://jupyter.org/
- olfactory 9y agoIs anyone aware of a GAN example using propel or deeplearn.js ?
- tekkk 9y agoThis could a fun way to learn ML using just your browser. I'm still skeptic about the performance but for prototyping it could be viable. One thing bothering me about reading the API is the inconsistent way of adding semicolons. Not an important thing I'm sure and as my personal opinion I'd much rather have the examples without them. To me they are just waste of time. Also it makes the code look more like Python. Anyway, looks great!
- irrational 9y agoYou will hate to hear that there is a serious proposal to make semicolons mandatory in the next version of ECMAScript.
- kevincennis 9y agoCan you provide a source for that? Closest thing I could find was this, which simply adds an ASI hazard clause: https://github.com/tc39/ecma262/pull/1062 https://github.com/tc39/ecma262/pull/1062
- seniorsassycat 9y agoI found [this pull request] that adds language recommending the use of semicolons, but no proposals to require semicolons or to remove Automatic Semicolon Insertion. Removing ASI from ECMAScript would break backwards compatibility - modern JS engines couldn't run scripts that use ASI which would break a lot of websites that are alread deployed. ECMA will add features that won't run in old engines (older V8 can't parse arrow functions) but they won't add/remove/change features that break existing behavior. Today there are code patterns where ASI is ambiguous, or at-least hard for a developer to grok. TC39 is warning developers that new language features will not be designed for ASI and might have confusing behavior if those new features are used without semicolons. [this pull request]: https://github.com/tc39/ecma262/pull/1062/files https://github.com/tc39/ecma262/pull/1062/files
- bakkoting 9y agoNo, there isn't. I am on TC39.
- 9y ago
- anonyfox 9y agoDidn’t he left the nodejs ecosystem because he said vocally that Go is so much better? Just curious what changed his mind...
- zengid 9y agoHe just hates almost all software anyway: http://tinyclouds.org/rant.html http://tinyclouds.org/rant.html
- teacpde 9y agoI think his argument at that time was mainly on network applications.
- insin 9y agoYou might be paraphrasing a little there [1] > Pramod: Yeah, I like the programming model of Go. Using goroutines is so much easy and fun. In fact, we are using at work for building a distributed application. > Ryan: Yeah, I think it’s… for a particular class of application, which is like, if you’re building a server, I can’t imagine using anything other than Go. That said, I think Node’s non-blocking paradigm worked out well for JavaScript, where you don’t have threads. And I think that a lot of the problems with kind of the call-back soup problem, where you have to jump into many anonymous functions to complete what you’re doing has been alleviated these days, with the async keyword, the async feature that’s in Javascript now. > So, kind of the newer versions of Javascript has made this easier. That said, I think Node is not the best system to build a massive server web. I would use Go for that. And honestly, that’s the reason why I left Node. It was the realization that: oh, actually, this is not the best server-side system ever. > Yeah. I think where Node has shined, weirdly, on the client side. So, doing kind of scripting around building websites. So, Browserify, for example. Kind of bundles up client-side Javascript. So, you can have all this server-side processing of client-side Javascript. And then, you know, maybe small servers to… maybe little development servers, and here and there, maybe some real servers serving live traffic. Node can be useful, or it can be the right choice for it. But if you’re building a massively distributed DNS server, I would not choose Node [1] https://www.mappingthejourney.com/single-post/2017/08/31/episode-8-interview-with-ryan-dahl-creator-of-nodejs/ https://www.mappingthejourney.com/single-post/2017/08/31/epi...
- zengid 9y agoLooks like Mr Dahl was among the inaugural class of the Google Brain Residency: http://tinyclouds.org/residency/ http://tinyclouds.org/residency/
- batmansmk 9y agoGoing back to the Tensorflow C API and adding plotting + networking + async capability is a smart engineering choice. Will this project expand faster than Tensorflow Python to make it worth investing in? We will see in the coming months :)
- cjalmeida 9y agoPython has a larger ecosystem for data intensive application and pratictoners. As a language it's very easy to learn for JavaScript devs. The only "killer" feature JS may bring to the table would be client side, browser based inference that leverages GPU. But we're eons away from that.
- TAForObvReasons 9y agoArguably the only "killer" feature Python has is the ecosystem. There are efforts to build out a similar ecosystem for JS. For example https://github.com/jacobbogers/libRmath.js https://github.com/jacobbogers/libRmath.js is a typescript port of R's core math library https://svn.r-project.org/R/trunk/src/nmath/ https://svn.r-project.org/R/trunk/src/nmath/
- kahnjw 9y agoAnd the full force of the entire machine learning research community (except for a few still on Lua/Torch).
- kapv89 9y agoWe JS folks just need 1 good deep-learning system in JS. I really want that system to be propel as it leverages the work that has gone in on tensorflow. Let that piece fall into place, and just watch as the last bastion of python gets overrun.
- dagw 9y agoHow do you figure that deep learning is "the last bastion of python". From where I'm sitting deep learning is just the newest of many bastions.
- herve76 9y agoWe need more projects like this to bring better AI to JS. Thanks.
- lunchladydoris 9y agoI enjoy machine learning and I'm interested in learning Javascript, so this seems really interesting. That said, what would be a good way to build some Javascript experience that would be useful for something like this?
- angel_j 9y agothis project does not work out of the box via npm install. seems like you have to get all babel.js with it and maybe use a typescript executor like ts-node ES2015 imports took javascript back to 2008, before node and npm made it awesome. use NPM and require if you are building tools for other people, that way they can implement your work without adding compilers and obscure configurations to their build. don't nobody want to use be forced to use alternative and backwards incompatible technology use typescript and import for "business logic"
- piscisaureus 9y agoAlthough propel itself is written in typescript, supporting users that want to write javascript is an explicit design goal. The npm package contains "vanilla" javascript that targets node.js 8.x and later.
- flaque 9y agohttps://blog.codinghorror.com/the-principle-of-least-power/ https://blog.codinghorror.com/the-principle-of-least-power/