-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Why not work with 10 bit input data? #1
Comments
The first two methods do not work, the output values are the same. Yes, everything works with normalization, but this is a microcontroller, and there is always not enough processor time, and there’s also an extra division ... May be problem is in float datatype? As i know in arduino float=double="as large as 3.4028235E+38 and as low as -3.4028235E+38" only... not 1024... |
Introduction:First of all Thanks for the insight, (but i deleted my previous comment because i realised why the issue existed) and also i am really sorry for my late reply :/ ... Reason:After Viewing my code i realised that it is because of no normalization of 10bit input data (most probably i will add this feature in future updates·) : It has to do with the Backpropagation/Training-phase and the Fisrt-inputs When does it make a difference? When you are using traditional backpropagation with sigmoid activation functions, it can saturate the sigmoid derivative." Solution:To solve that issue you can do two things , to expiriment with the default Normalization Function of arduino (aka Maping) which i dont know yet if it works with floats or doubles... or! as solution 2 (which is the the best solution as i think/i know...), is to just normalize data by using this code below:
inputs[110][8] = { {540,131,48,3,0,0,0,0},... should be something like this after: Ending:·Thanks you very much for pointing it out (: , i should have thought about it .. but its ok anyways (: ... I wish you good luck and a nice day Wish i have helped you (: |
Ok, thank you! |
it is :
i had by mistake :
i've edited it though |
I have 10 bit input data like this
const double inputs[110][8] = {
{540,131,48,3,0,0,0,0},
{624,167,63,15,0,0,0,0},
{736,224,96,31,0,0,0,0},...
but after learning output is the same for exemple
0.8215888
0.8215888
0.8215888
...
after i divide for 1024 i have data like this
const double inputs[110][8] = {
{0.52734375,0.1279296875,0.046875,0.0029296875,0,0,0,0},
{0.609375,0.1630859375,0.0615234375,0.0146484375,0,0,0,0},
{0.71875,0.21875,0.09375,0.0302734375,0,0,0,0},...
and it works perfectly...
How to do without dividing the input data???
The text was updated successfully, but these errors were encountered: