Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8349563
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T08:02:29+00:00 2026-06-09T08:02:29+00:00

I tried to create a neural network to estimate y = x ^ 2.

  • 0

I tried to create a neural network to estimate y = x ^ 2. So I created a fitting neural network and gave it some samples for input and output. I tried to build this network in C++. But the result is different than I expected.

With the following inputs:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 -1
-2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71

and the following outputs:

0 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400
441 484 529 576 625 676 729 784 841 900 961 1024 1089 1156 1225 1296
1369 1444 1521 1600 1681 1764 1849 1936 2025 2116 2209 2304 2401 2500
2601 2704 2809 2916 3025 3136 3249 3364 3481 3600 3721 3844 3969 4096
4225 4356 4489 4624 4761 4900 5041 1 4 9 16 25 36 49 64 81 100 121 144
169 196 225 256 289 324 361 400 441 484 529 576 625 676 729 784 841
900 961 1024 1089 1156 1225 1296 1369 1444 1521 1600 1681 1764 1849
1936 2025 2116 2209 2304 2401 2500 2601 2704 2809 2916 3025 3136 3249
3364 3481 3600 3721 3844 3969 4096 4225 4356 4489 4624 4761 4900 5041

I used fitting tool network. with matrix rows. Training is 70%, validation is 15% and testing is 15% as well. The number of hidden neurons is two. Then in command lines I wrote this:

purelin(net.LW{2}*tansig(net.IW{1}*inputTest+net.b{1})+net.b{2})

Other information :

My net.b[1] is: -1.16610230053776 1.16667147712026

My net.b[2] is: 51.3266249426358

And net.IW(1) is: 0.344272596370387 0.344111217766824

net.LW(2) is: 31.7635369693519 -31.8082184881063

When my inputTest is 3, the result of this command is 16, while it should be about 9. Have I made an error somewhere?

I found the Stack Overflow post Neural network in MATLAB that contains a problem like my problem, but there is a little difference, and the differences is in that problem the ranges of input and output are same, but in my problem is no. That solution says I need to scale out the results, but how can I scale out my result?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T08:02:30+00:00Added an answer on June 9, 2026 at 8:02 am

    You are right about scaling. As was mentioned in the linked answer, the neural network by default scales the input and output to the range [-1,1]. This can be seen in the network processing functions configuration:

    >> net = fitnet(2);
    
    >> net.inputs{1}.processFcns
    ans =
        'removeconstantrows'    'mapminmax'
    
    >> net.outputs{2}.processFcns
    ans =
        'removeconstantrows'    'mapminmax'
    

    The second preprocessing function applied to both input/output is mapminmax with the following parameters:

    >> net.inputs{1}.processParams{2}
    ans =
        ymin: -1
        ymax: 1
    
    >> net.outputs{2}.processParams{2}
    ans =
        ymin: -1
        ymax: 1
    

    to map both into the range [-1,1] (prior to training).

    This means that the trained network expects input values in this range, and outputs values also in the same range. If you want to manually feed input to the network, and compute the output yourself, you have to scale the data at input, and reverse the mapping at the output.

    One last thing to remember is that each time you train the ANN, you will get different weights. If you want reproducible results, you need to fix the state of the random number generator (initialize it with the same seed each time). Read the documentation on functions like rng and RandStream.

    You also have to pay attention that if you are dividing the data into training/testing/validation sets, you must use the same split each time (probably also affected by the randomness aspect I mentioned).


    Here is an example to illustrate the idea (adapted from another post of mine):

    %%# data
    x = linspace(-71,71,200);            %# 1D input
    y_model = x.^2;                      %# model
    y = y_model + 10*randn(size(x)).*x;  %# add some noise
    
    %%# create ANN, train, simulate
    net = fitnet(2);                     %# one hidden layer with 2 nodes
    net.divideFcn = 'dividerand';
    net.trainParam.epochs = 50;
    net = train(net,x,y);
    y_hat = net(x);
    
    %%# plot
    plot(x, y, 'b.'), hold on
    plot(x, x.^2, 'Color','g', 'LineWidth',2)
    plot(x, y_hat, 'Color','r', 'LineWidth',2)
    legend({'data (noisy)','model (x^2)','fitted'})
    hold off, grid on
    
    %%# manually simulate network
    %# map input to [-1,1] range
    [~,inMap] = mapminmax(x, -1, 1);
    in = mapminmax('apply', x, inMap);
    
    %# propagate values to get output (scaled to [-1,1])
    hid = tansig( bsxfun(@plus, net.IW{1}*in, net.b{1}) ); %# hidden layer
    outLayerOut = purelin( net.LW{2}*hid + net.b{2} );     %# output layer
    
    %# reverse mapping from [-1,1] to original data scale
    [~,outMap] = mapminmax(y, -1, 1);
    out = mapminmax('reverse', outLayerOut, outMap);
    
    %# compare against MATLAB output
    max( abs(out - y_hat) )        %# this should be zero (or in the order of `eps`)
    

    I opted to use the mapminmax function, but you could have done that manually as well. The formula is a pretty simply linear mapping:

    y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;
    

    Screenshot

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have tried create this table, but nothing I have tried works from FKs.
I tried to create a package using some functions and scripts I created (using
I tried to create some users for my testing. I created users in a
I tried to create this by following the video at http://www.asp.net/learn/videos/video-7026.aspx where Joe Stagner
I am porting some C code involving an artificial neural network to Java. I
I tried to create tables, but it was useless because each begin-end block wrapped
I tried to create an alias in bash but am not able to do.
Tried to create this Extension method. Works except that the helper is rendering text,
I tried to create a video tag in ASP.NET 4 in MVS 2010 but
This is probably stupid simple, but for some reason I'm having trouble getting it

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.