# Do inputs to a Neural Network need to be in [-1,1]?

I want to create an weather forecast using Neural Networks. All the examples I saw used only values [-1,1] as an input. Is it also possible to use bigger values (like air pressure, degree calcius of the last couple of days,...) as inputs and get an number as output?

Thank you

-
Speaking in general for classification algorithms and not just neural networks any variable like the ones you suggest can be used for classification. Any such variables that help separate the classes should be included. Even binary tree calssifier use continuous variable dichotomizing by finding split points. –  Michael Chernick Jul 4 '12 at 19:17

You can normalize the values so that you use, for example,

$$\frac{AP - AP_0}{AP_1-AP_0}$$

where $AP$ is the current air pressure, $AP_0$ is the air pressure value you want sent to $0$, and $AP_1$ is the air pressure value you want sent to $1$.

It is ok if your inputs occasionally go a bit outside $[-1,1]$.

It is dangerous if an input is usually small, but has some occasional extreme values. Then it might be better to split the input into more than one input value, or to remove the outliers and accept that the neural network has a restricted context of applicability. Rescaling so that the outliers are between $-1$ and $1$ won't fix the problem.

-
So AP0 and AP1 are like my boundries for air pressure values? –  user1406177 Jul 4 '12 at 20:33
They don't have to be boundaries. They are reference values so that most values get scaled to the range you want. So, for temperatures, you could use $T_1 = 35$, $T_0 = -5$, even though it occasionally goes over $35$ or under $-5$ degrees Celsius. It's not terrible if the range is larger by a factor of $2$, but try not to be off by a factor of $10$ or it may slow down the training. –  Douglas Zare Jul 4 '12 at 21:33
Allright, thank you! –  user1406177 Jul 5 '12 at 12:33
Theoretically, scaling your data should not make a difference for neural networks. It just means that the optimal weights will also be scaled. In practice it could make a difference because floating point representations are not exact, i. e. when you have huge input, your weights will be very small and a little change maybe could not be represented. On the other hand, you usually have sigmoid activation functions, which tend to saturate for large inputs and then will only adjust slowly during training. That means, scaling your data often accelerates training. –  alfa Jul 12 '12 at 12:40
The training methods are not scale-invariant, so scaling does affect how rapidly you train even if you don't saturate the nodes. –  Douglas Zare Jul 12 '12 at 23:21
show 1 more comment