Neural Networks in iOS 10 and macOS
bignerdranch.com
bignerdranch.com
Perhaps the front facing camera might get a bit more interesting in the future for more than just selfies.
There needs to be much more functionality to build a state-of-the-art vision network, such as Google's Inception v3, at least if you want to avoid writing your own layer definitions. Hopefully they'll expand this out later. In the foundation keynote they did mention using LSTMs for predictive text, so hopefully more advanced things are in the pipeline and just haven't been API-ified yet.
For reference, the deep learning library I'm working on will contain 17 layer types in its first version, with later versions probably asymptoting to double that. There are a LOT of things out there that deserve their own layer types.
EDIT: to be fair to Apple, since convolution, pooling, and fully connected layers are among the most costly layers, they are the most valuable to have efficient platform implementations for.
http://arxiv.org/pdf/1512.00567v3
From late 2015, so I guess the most up to date info? It only mentions v2. Is there a paper for v3?
Edit: Sure enough v3 is right there. I saw the early focus on v2 and jumped to the big dumb assumption that v3 wasn't in there.
I think it's a great decision for Apple to make sure developers use this functionality. Apple is still very much a hardware company. By pushing the hardware to it's limits, Apple makes sure you'll want to upgrade to the latest and greatest. Also, by doing the heavy lifting locally instead of in the cloud, Apple saves money on servers and infrastructure. And to top it off, they can make some privacy claims.
I'll add that at this point, there's isn't much 'lock in' between different frameworks. Once you've trained, and if your primitives are available in the target framework, porting is just a matter of getting your weights and topology into the right format. Not too hard compared to the nitty gritty of gathering data, designing a network, and doing training and hyperparameter optimization.
We only just got iOS support in TensorFlow last week (https://developers.googleblog.com/2016/06/tensorflow-v09-now...), but this is something our team would like to get done, so stay tuned!
The energy efficiency is an excellent point.
Ultimately I am still extremely leery of the apple lock in factor in general and their arbitrary rulings of what is and is not okay within the garden.
I am still pretty upset and maybe even somewhat traumatized about all the previous times they've fucked me over in scenarios like this. It starts out great and then gets ruined.
edit It looks like I've hit the HN rate limiter, so I'm merging my reply:
Unfortunately I can't go into detail about these scenarios because I don't want to get into trouble with my employer. Suffice it to say that I no longer place trust in Apple keeping anything of value "open".
I haven't done much development using Apple frameworks. I'm curious, where has this happened to you before?
It doesn't necessarily have to be evil or crazy that they do this. In fact it would be strange if they worried excessively about preserving the performance of all legacy devices.
iOS is slightly different, as each time apple works to retain legacy devices and pushes out the major iteration of iOS, the performanceon other devices do suffer a little, but even with the most recent iOS release they started focusing on slicing down unnecessary parts of apps to save space.
Apple has really been working decently ont he preservation leg of their line up.
I'm disputing that this is done intentionally to degrade performance and make it more attractive to upgrade - which is what the original comment stated.
They actually disable most of the new effects on older hardware which indicates that they want the software to perform acceptably.
And more to the point, supporting older hardware at all extends the useful life of that hardware by allowing it to run modern applications and have access to new features.
Both embrace modern languages instead of plain old C, have very nice visual debuggers.
Also on Android side, Google is all about Renderscript not OpenCL.
OpenCL had to become an almost irrelevant, for Khronos to step up with SPIR and SYS-C++.
Yet they did it again with Vulkan, being plain old C.