Answers.Body: <p>It depends on what you mean by "ML engine" and whether you want to <em>train</em> models on the uC or just make predictions.  IF you're doing something simple (maybe linear regression, logistic regression, etc.) you might be able to get away with doing training on a uC, especially for small amounts of data.  But you're almost certainly not going to be training deep neural networks on one of those things, at least not in any reasonable amount of time.</p>
  
  <p>OTOH, the "making a prediction part" is usually much cheaper computationally, so if you have a pre-trained model and some prediction engine that can use that model, you could possibly use that on a microcontroller.  </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-23T15:55:08.557Z
Answers.LastActivityDate: 2017-06-23T15:55:08.557Z
Answers.UserDisplayName: mindcrime
Answers.Body: <p>Absolutely, but it almost certainly won't be as strong as companies that design for specialized processors.  </p>
  
  <p>For instance, <a href="http://www.nvidia.com/object/drive-px.html" rel="nofollow noreferrer">NVIDIA Drive</a> for autonomous vehicles is marketed as a "supercomputer".  (Autonomous vehicles cannot rely on a network for decision making, so the vehicle needs a computer up to the task.)</p>
  
  <p>A good example of specialized micro-processors, pre-GPU, is <a href="https://en.wikipedia.org/wiki/Digital_signal_processor#History" rel="nofollow noreferrer">Digital Signal Processors</a>, where the architecture was driven by the focus on multiplication in common digital signal processing algorithms. (Binary multiplication is much more expensive than addition/subtraction in terms of operations.) </p>
  
  <p><em>I suspect much of the recent success of "<a href="https://en.wikipedia.org/wiki/Monte_Carlo_tree_search" rel="nofollow noreferrer">monte carlo</a>" has to do with brute force, but I need to confirm that.</em> </p>
  
  <p>The whole point of high-level languages is to be able to operate on different processors without having to customize for each processor, as with machine languages.  Most C languages allow bitwise operations, so you'd be able to take advantage of that, although interpreted languages such as Python appear to be extremely popular for AI, probably due to the flexibility in terms of testing code without needing to compile.  </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-23T16:04:26.097Z
Answers.LastActivityDate: 2017-06-23T16:04:26.097Z
Answers.UserDisplayName: DukeZhou
Body: <p>I have read some articles, some tutorials but I am still didn't implemented any AI system. So , My question may seem inappropriate for the giants in this field. But I have build certain program , downloaded to microcontroller and it will perform its task. But How to do all this with machine learning. Can I implement AI engine using C like language and make it working in any GPP uC? Please feel free to modify, edit and upgrade this questions if you get my actual problem idea.</p>
  
Tags: <machine-learning>
Title: Can we implement ML engine using any general purpose Micro controller?
UserDisplayName: Ravi C
ThreadText: # Can we implement ML engine using any general purpose Micro controller?
  
  (Asked by: username_0 on 2017-06-23)
  
  I have read some articles, some tutorials but I am still didn't implemented any AI system. So , My question may seem inappropriate for the giants in this field. But I have build certain program , downloaded to microcontroller and it will perform its task. But How to do all this with machine learning. Can I implement AI engine using C like language and make it working in any GPP uC? Please feel free to modify, edit and upgrade this questions if you get my actual problem idea.
  
  **Tags:** machine-learning
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2017-06-23. Score: 1
  
  It depends on what you mean by "ML engine" and whether you want to *train* models on the uC or just make predictions. IF you're doing something simple (maybe linear regression, logistic regression, etc.) you might be able to get away with doing training on a uC, especially for small amounts of data. But you're almost certainly not going to be training deep neural networks on one of those things, at least not in any reasonable amount of time.
  
  OTOH, the "making a prediction part" is usually much cheaper computationally, so if you have a pre-trained model and some prediction engine that can use that model, you could possibly use that on a microcontroller.
  
  
  ---
  
  ### Answer by username_2 on 2017-06-23. Score: 0
  
  Absolutely, but it almost certainly won't be as strong as companies that design for specialized processors.
  
  For instance, [NVIDIA Drive](http://www.nvidia.com/object/drive-px.html) for autonomous vehicles is marketed as a "supercomputer". (Autonomous vehicles cannot rely on a network for decision making, so the vehicle needs a computer up to the task.)
  
  A good example of specialized micro-processors, pre-GPU, is [Digital Signal Processors](https://en.wikipedia.org/wiki/Digital_signal_processor#History), where the architecture was driven by the focus on multiplication in common digital signal processing algorithms. (Binary multiplication is much more expensive than addition/subtraction in terms of operations.)
  
  *I suspect much of the recent success of "[monte carlo](https://en.wikipedia.org/wiki/Monte_Carlo_tree_search)" has to do with brute force, but I need to confirm that.*
  
  The whole point of high-level languages is to be able to operate on different processors without having to customize for each processor, as with machine languages. Most C languages allow bitwise operations, so you'd be able to take advantage of that, although interpreted languages such as Python appear to be extremely popular for AI, probably due to the flexibility in terms of testing code without needing to compile.
  
  
  ---
  
  