Awesome job! If anyone else is working on a project like this or is interested in learning more about applied machine learning we've got a helpful Slack community over at Heartbeat (https://bit.ly/heartbeatslack)
This looks really neat and it's definitely fun to play around with. I can't resist playing around with tools like this for a few minutes, but I've never really figured out what they're good for.
What am I supposed to learn from them? What is the actionable information? That's not really a criticism, I just feel like I'm missing something.
Regardless of whether or not this would make anyone money, it's a really nice introduction to forecasting time series using LSTMs. Thanks for the post!
Core ML is going to be your best bet. Most training is still done server side using frameworks like TensorFlow, Keras, and PyTorch. Once you've trained your model, you can convert it to Core ML with coremltools or export it to Core ML directly if the platform supports it.
Apple has a couple tools, Turi Create and Create ML, to train ML models specifically for mobile use, but their not nearly as fully featured or widely used.
If you're interested specifically in mobile ML, check out https://heartbeat.fritz.ai. We've got a bunch of resources for mobile machine learning. If you're looking for ready-to-use models or tools to manage them in your app, check out Fritz (https://fritz.ai). Disclaimer, I'm a founder at Fritz which sponsors Heartbeat. Happy to answer any questions!
Thats a good point. I mixed up the iPad Pro 2 with the 6th Gen iPad from 2018. The 2018 iPad just squeaked through my threshold for having enough data to be included here, so it's possible that this is just noise. I'll dig into the variance as more data comes in. The article is updated to reflect it. Thanks!
Your point about the integration between software and hardware is spot on. Even the Android devices with powerful GPUs or AI accelerators are really difficult to access because Android APIs (even the NNAPI) is really tough to use. Core ML "just works" with the CPU / GPU / Neural Engine.
Congrats to the Numericcal team on the launch! It's great to see new runtimes coming out to improve performance specifically on Android. It's been a real pain for us to get things up to par with Apple devices running Core ML.
We’re building something similar but focused on existing Core ML/Tensorflow runtimes if anyone is looking for similar management features for iOS, check out https://fritz.ai. (Full disclosure, I’m one of the co-founders).
Not a joke / easter-egg. RELU6 is an activation function commonly used in deep convolutional neural networks. It comes up fairly often in mobile machine learning cases because it's used in Google's optimized MobileNet architecture and would cause errors when trying to convert to run on device.
The original paper detailing the function is here (PDF warning):
"Our ReLU units differ from those of [8] in two respects. First, we cap the units at 6, so our ReLU activation
function is:
y = min(max(x, 0), 6).
In our tests, this encourages the model to learn sparse features earlier. In the formulation of [8], this is
equivalent to imagining that each ReLU unit consists of only 6 replicated bias-shifted Bernoulli units, rather
than an infinite amount. We will refer to ReLU units capped at n as ReLU-n units."
Facebook has open sourced some pre-trained models: https://github.com/facebookresearch/wav2letter
Picovoice has some smaller, more efficient models capable of running on edge devices: https://github.com/Picovoice
Full ASR does require quite large models and datasets, but you don't need nearly that much power or data to fine-tune a model for your own domain.