Вам не нужно добавлять два softmax.Хорошо только последний:
outputs = Dense(200, activation='relu', activity_regularizer=l1(1e-5))(x)
outputs = Activation('softmax')(outputs) # still real zeros, normalized
Тем не менее, если у вас больше промежуточных слоев и вы хотите, чтобы они вели себя более умеренно, вы можете использовать «tanh» вместо softmax.
Часто проблема с relu-моделями не совсем в том, что «они не суммируют 1», а просто в том, что «их значения слишком высоки, градиенты не могут вести себя хорошо».
#this combines a max output of 1 (but doesn't care about the sum)
#yet keeping the sparsity:
outputs = Dense(200, activation='tanh')(x)
outputs = Activation('relu')(outputs) # to get real zeros
outputs = Dense(200, activation='relu')(outputs)
#this should only be used at the final layer
#and only if you really have a classification model with only one correct class
outputs = Activation('softmax')(outputs) # still real zeros, normalized output
Softmax склоняется в пользу только одного из результатов.Если вы не хотите менять сравнение результатов между собой, но хотите получить sum=1
, вы можете обратиться к ответу @ nuric.