Q:

loss stops decreasing during training a MLP network

I build a MLP based on 1D convolution for prediction purposes, the model architecture looks as follows. However, the training process of this model tends to stop after only two epochs. The training process statistics is shown as follows, what might be the reason and how to modify it?  The code is this
loss_function = 'mean_squared_error'
optimizer = 'Adagrad'
batch_size = 256
nr_of_epochs = 120
inputs = Input(shape=(64,1))
outX = Conv1D(60, 32, strides=1, activation='relu',padding='causal')(inputs)
outX = Conv1D(80, 10, activation='relu',padding='causal')(outX)
outX = Conv1D(100, 5, activation='relu',padding='causal')(outX)
outX = MaxPooling1D(2)(outX)
outX = Dense(300, activation='relu')(outX)
outX = Flatten()(outX)
predictions = Dense(1,activation='linear')(outX)
model = Model(inputs=[inputs],outputs=predictions)
print(model.summary())
model.compile(loss=loss_function, optimizer=optimizer,metrics=['mse','mae'])
history=model.fit(X_train, Y_train, batch_size=batch_size, validation_data=(X_val,Y_val), epochs=nr_of_epochs,verbose=2)

A:

I think you are using default learning rate of 0.01, with my past experience with Keras I can say that you might have to reduce the learning rate, maybe to 0.001 or 0.0001
You can find the default values in this function signature: Adagrad 
Change the optimizer value to something like this
from keras import optimizers
optimizer = optimizers.Adagrad(lr=0.001)

And keeping other code same, I think you should see some improvements.

