05-01-2021 05:15 AM
I have a software radio problem I want to solve with a neural network. I am a new to this subject but I have studied enough to see that a very simple feed forward network will probably solve my problem.
The input to the network is six to ten 8-bit numbers. The output is two signed 8-bit numbers. Training data can be easily synthesized with computer code. I can look at the training data and visually detect the correct answeres but it is very unclear how to write equations to accomplish the task. The processing rate is 1KHz. Low latency is desirable.
I would like to implement this network in fpga fabric. I am an fpga programmer familiar with Vivado, HLS, ZynqMP, SystemVerilog, ...
Are there fpga cores I can use for this?
Is there HLS design source for such a network?
What software should I use to train the network?
Is there Xilinx documentation that would help me?
Any advice is greatly appreciated.
05-02-2021 01:22 AM
I know there is a Matlab Neural Network toolbox but that may be over the moon. Python can do the job for a "very simple" NN.
I have seen some ML cores in design-reuse but I guess not "simple" and in the thousands.
The trick about neural networks is in the architecture, number of layers, nodes, type of normalizing function, etc. Once you find an architecture that works, the rest is basic algebra, that's all current ML is.
Once that is understood, looking for "HLS design source" makes no sense: it's trivial.
I assume you want to deploy a trained network, so the parameters are hardcoded. In that case I would use Python, play with architectures and data, and once you have a model you are happy with, translate the operations into HLS, it should be quite a straight path. Layer operations can easily be pipelined but for a shorter latency you can run that core with a faster clock.
05-02-2021 06:17 AM
You understand me correctly. I want to deploy a trained network.
Training data will not be a problem because I can synthesize it. I want to play around with architectures to get the simplest solution that does a good job.
When you say "use Python" are you suggesting I use packages like Keras and Tensorflow or are you saying that training algorithms are so simple that I can easily code them from scratch? I'm pretty comfortable in Python.
05-02-2021 09:10 AM
I don't think you need tensorflow or keras, these are more for the million-nodes level, convolutional stuff, etc. If all you have is a few layers with the classical weighted sum at each node, no need of those monsters.