Thank you for your response. I see your point about the combination of relu and sigmoid functions.
Some data I used for training (I reduced the number of features in my training data from 128 to 20):
X_train [20:30]:
array([[755, 234, 386, 240, 756, 546, 667,  29, 757, 171, 598, 758, 746,
        667, 331, 104, 713, 357, 685, 759],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 760,
         64, 218,  71, 423,  25, 104, 761],
       [  0,   0,   0,   0,   0,   0, 762, 254,  82,  72,  54,  16, 763,
        764, 765, 766, 277,  72,  93, 767],
       [126, 780,  91, 781, 349, 782, 783, 784, 349, 785, 786, 240,  70,
        787, 788, 789, 790,  68, 116, 791],
       [794, 795, 491, 624, 796, 328, 491, 225, 391, 360, 491, 225, 433,
        192, 797, 403, 798, 799, 190, 800],
       [815, 510, 294, 819,  86,   5, 820, 821, 379, 822, 823,  63,  64,
         65,  93,  36, 169, 437, 806, 824],
       [849,  64, 397, 850, 482, 297, 851, 852,  64, 104, 853, 765,  25,
        854,  64,  86, 298, 778, 855, 856],
       [869,  64, 870, 251, 254,  29,  20, 611, 192, 871,  30, 217, 872,
        211,  30,  25, 278, 873, 874, 875],
       [  8, 319, 892, 893, 693,  30, 523, 894, 895, 896, 897, 545,  25,
        898, 523, 899,  71, 900, 326, 901],
       [903,  30, 123, 904, 479, 102, 566, 905, 906, 907, 908, 111, 535,
        826,  46, 909, 910, 911, 912, 913]], dtype=int16)

y_train [20:30]:
array([0, 1, 1, 0, 1, 1, 1, 1, 1, 1])

np.mean(X_train) = 1957.034
np.var(X_train) = 13721958.513
np.max(X_train) = 23637
np.min(X_train) = 0

np.mean(y_train) = 0.683
np.var(y_train) = 0.216
np.max(y_train) = 1
np.min(y_train) = 0