<p>Given your problem setup, it looks like you're trying to training a neural network on one image such that it is able to predict the blue channel of an image from other 2 images.  Putting aside the use of such an experiment, there are a few important things when training neural networks properly, including.    </p>

<ol>
<li>learning rate</li>
<li>weight initialization</li>
<li>optimizer</li>
<li>model complexity.</li>
</ol>

<p><a href="http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf" rel="nofollow noreferrer">Yann Lecun's Efficient backprop</a> is a late 90s paper that talks about numbers 1, 2 and 3. Number 4 holds on the assumption that as the number of free parameters increase, at some point you'll be able to match each parameter to each output. </p>

<p>Note that achieving zero-loss provides no guarantees on generalization nor does it mean that your model will not generalize, as brilliantly described in a <a href="https://arxiv.org/abs/1611.03530" rel="nofollow noreferrer">paper presented at ICLR</a>.</p>
How to design and train convolutional neural networks to estimate third band in an image to ful accuracy
<p>I am trying to estimate the third band(Blue) in an RGB image using convolutional neural networks. my design using Keras is a sequentiol model with a convolution2D layer as input layer two hidden layers and output neuron. if i want loss(rmse) to be zero how should i change my model?</p>

<p>my model in python goes like this</p>

<pre><code>in_image = skimage.io.imread('test.jpg')[0:50,0:50,:].astype(float)
data = in_image[:,:,0:2]
target = in_image[:,:,2:3]

model1 = keras.models.Sequential()
model1.add(keras.layers.Convolution2D(50,(3,3),strides = (1,1),padding = "same",input_shape=(None,None,2)))  #Convolution Layer
model1.add(keras.layers.Dense(50,activation = 'relu'))                      # Hiden Layer1
model1.add(keras.layers.Dense(50,activation = 'sigmoid'))                      # Hidden Layer 2
model1.add(keras.layers.Dense(1))                                           # Output Layer
adadelta = keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0)
model1.compile(loss='mean_squared_error', optimizer=adadelta)               # Compile the model


model1.fit(np.array([data]),np.array([target]),epochs = 5000)

estimated_band = model1.predict(np.array([data]))    
</code></pre>