I wanted to compare some (pre-existing) Python code I have for Radial basis function (neural) networks (RBFNN) for the goal of function approximation, with what I could obtain with Mathematica 11.0.

I found some old documentation that indicates mma used to have RBFNNs implemented in a "straight-forward" fashion.

However, I can't find any mention of them in the mma v. 11 documentation; I'm pretty much a neophyte in neural networks, but it seems that in the Neural Networks package of the current version of mma NNs can be implemented in a "Lego"-like fashion by stacking together layers of different kinds (if the analogy makes sense).

So my question is, is it straightforward to implement RBFNNs in mma 11 with the its Neural Network package (and if so, can someone show how)? Or would I be better off ignoring the Neural Network package completely and writing/porting an implementation based on "first principles"?

  • $\begingroup$ it is likely worthwhile to use the Neural Networks package, which is excellent. it ought to be straightforward, unless i'm misunderstanding RBFNNs. I think you would just want to use ElementwiseLayer to define the RBF (and use it in place of Ramp or LogisticSigmoid); the rest of it is essentially just the standard multilayer perceptron, right? $\endgroup$ – Michael Curry May 23 '17 at 4:38
  • $\begingroup$ oh, I just found this explanation mccormickml.com/2013/08/15/…. it is a little trickier than I thought. The "prototypes" could be included as an EmbeddingLayer or ConstantArrayLayer, with LearningRate set to 0 in the training options to prevent them from updating. Or, the prototypes could be an additional input to the model. in general though you can only use this framework if you want to train using backpropagation. $\endgroup$ – Michael Curry May 23 '17 at 4:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.