According the first paper, running is not a problem. That was the purpose. Only there is a limitation on the maximum weights:
Currently the limitation on the architecture embedded in this microcontroller is limited only by the number of weights needed. The neural network is currently limited to 256 weights. However for most embedded applications this 256 weight should not limit the system.
As for training, as far as I understand the implementation described, the PIC controller receives parameters from an external source.
The neural network forward calculations are written so that each neuron is calculated individually in a series of nested loops. The number of calculations for each loop and values for each node are all stored in a simple array in memory.
These arrays contain the architecture and the weights of the network. Currently, for demonstration purposes, these arrays are preloaded at the time the chip is programmed, but in the final version this would not be necessary. The microcontroller could easily be modified to contain a simple boot loader that makes use of the onboard RS232 serial port which would receive the data for the weights and topography from a remote location. This would allow for the weights or even the entire network
to be modified while the chip is in the field.
I suspect that the training is performed externally as well.
The paper also gives references for Neural Network Trainers which were probably used to determine the values preprogrammed into the PIC's memory.
- Wilamowski, B. M.; Cotton, N.; Hewlett, J.; Kaynak, O.,
"Neural Network Trainer with Second Order Learning Algorithms,"
- Wilamowski, B. M.; Cotton, N. J.; Kaynak, O.; Dundar, G.,
"Method of computing gradient vector and Jacobean matrix in
arbitrarily connected neural networks,"
Now, I have looked into the first one which describes network architectures
and algorithms to use with them. But the Neural Network Trainer software used here is implemented in MATLAB.
Currently, there is very little neural network training software available
that will train fully connected networks. Thus a package with a graphical user interface has been developed in MATLAB for that purpose. This software
allows the user to easily enter very complex architectures as well as initial
weights, training parameters, data sets, and the choice of several powerful
I have to mention that the fully connected networks has lower weights number for a same task than a layer by layer architecture. That makes it more suitable for microcontrollers.
I am not a neural network expert and it is quite complex so I can be wrong, but based on these papers I would say that Cotton, Wilamowski and Dündar's approach requires an external, more powerful platform to perform the training.
About running a neural network on a microcontroller, ST Microelectronics just announced a toolkit STM32Cube.AI: Convert Neural Networks into Optimized Code for STM32 to convert pre-trained neural networks from popular libraries to most of their STM32 MCUs.