I found the answer for my problem. The main reason for getting negative results after I trained and tested the dataset with positive numbers was that the distribution of new dataset was different from those of train and test samples. They had more noise. In my case, the solution was not to change the activation functions of the last layer (it leaded to physically meaningless results) but to add some syntatic random noise to my dataset. This robusted the model against the noise.