<p>Normalizing pixel values to range <code>[0..1]</code> (instead of <code>[0..255]</code>) is common practice not only in deep learning, but also in other domains of image-processing/computer-vision.<br>
This is mainly done since the native <code>uint8</code> pixel values are not easy to work with - <code>uint8</code> easily over/underfloat. Therefore, it is more convenient to convert pixel values to <code>float</code> type in range <code>[0..1]</code>.</p>

<p>Trying to cope with vanishing/exploding gradients in deep nets, there are many theoretical papers analyzing the distribution of activation values (see e.g., <a href="https://arxiv.org/abs/1502.01852" rel="nofollow noreferrer">this work</a>). These works usually assume a normal distribution of values - thus the scaling. You will also come across many nets that in addition to scaling the nets subtract "image mean" from the input.</p>
Why does caffe io load_image normalize rgb values of png files from 0-1?
<p>The <code>caffe.io.load_image()</code> function call on a png, returns a numpy 3d array, with the rgb values as normalized floats in the 0-1 range instead of 0-255. </p>

<p>Is this:</p>

<ol>
<li>common practice when loading images into array like structures?</li>
<li>have something to do with how the caffe network layers uses the images?</li>
<li>something to do with how png files are stored? </li>
</ol>

<p>Thanks</p>