GiorgosXou / NeuralNetworks

A resource-conscious neural network implementation for MCUs
MIT License
70 stars 21 forks source link

ISSUE WITH #define ACTIVATION__PER_LAYER on Ardunio DUE #35

Closed KillianVoy closed 4 weeks ago

KillianVoy commented 4 weeks ago

Hello, I am currentlly trying to create a NN with different types of activation functions per layers, however when I try to use #define ACTIVATION__PER_LAYER, I get the following errors on Arduino IDE :

 𝗨𝗦𝗜𝗡𝗚 [ƒx] |‣ Sigmoid |‣ Tanh |⌥|

 #pragma message( STR(INFORMATION) )
                                   ^
C:\Users\...\Arduino\libraries\NeuralNetwork\src/NeuralNetwork.h:900:9: error: 'activation_Function_ptrs' declared as an 'inline' field
         };
         ^
C:\Users\...\Arduino\libraries\NeuralNetwork\src/NeuralNetwork.h:900:9: error: 'constexpr' needed for in-class initialization of static data member 'float (NeuralNetwork::Layer::* const NeuralNetwork::activation_Function_ptrs [2])(const float&)' of non-integral type [-fpermissive]
C:\Users\...\Arduino\libraries\NeuralNetwork\src/NeuralNetwork.h:943:13: error: 'derivative_Function_ptrs' declared as an 'inline' field
             };
             ^
C:\Users\...Documents\Arduino\libraries\NeuralNetwork\src/NeuralNetwork.h:943:13: error: 'constexpr' needed for in-class initialization of static data member 'float (NeuralNetwork::Layer::* const NeuralNetwork::derivative_Function_ptrs [2])(const float&)' of non-integral type [-fpermissive]

exit status 1

Compilation error: exit status 1"

How can i fix this ? I believe this might be an issue with the gcc version ?

GiorgosXou commented 4 weeks ago

Just fixed it, everything should work just fine now. I'm pretty sure it was a gcc version issue releated to inline declaration, indeed.

discord reference