3 ms·
This looks like a clearly written, compact, and easy-to-use neural network library. It could be useful for pedagogy, but the README should also mention (unless
by WoodenChair 8y ago
This looks like a clearly written, compact, and easy-to-use neural network library. It could be useful for pedagogy, but the README should also mention (unless I missed it) for naive readers that it is pretty much completely inappropriate for production since it uses no vector instructions nor GPU computation. It will be slow compared to any more sophisticated neural network library for anything but the most trivial applications.
For a similar equivalent in Swift see my project:
https://github.com/davecom/SwiftSimpleNeuralNetwork https://github.com/davecom/SwiftSimpleNeuralNetwork
- conceptoriented 8y ago> it is pretty much completely inappropriate for production since it uses no vector instructions nor GPU computation Many platforms do not have GPUs or special instructions, for example, at the edge.
- WoodenChair 8y agoSure, but we don't typically do sophisticated machine learning on them. The vast majority of modern CPUs have vector instructions. Even a Raspberry Pi's ARM has NEON.
- Qu3tzal 8y agoExcuse me if this sounds stupid but, vector instructions are assembly. I know we can use inline assembly or compile and link assembly alongside C but isn't it the compiler that is in charge of using vector instructions ? IIRC GCC has -mmx, -sse(2|3|4) options to enable this kind of instructions.
- WoodenChair 8y agoSure, if the compiler can find optimizations by inserting vector instructions, it will. But, typically you'll want to specifically format your code using matrices/a library like BLAS to maximize performance and use as many vector instructions as possible.
- fla 8y agoNot necessarily true. You might want to run ANNs on micro-controllers at the edge for many different reasons.