Функция потерь регрессии для нескольких выходов Keras

Я использую подход глубокого обучения для решения проблемы регрессии с несколькими выходами (16 выходов), каждый выход находится между [0,1], а сумма равна 1. Я не понимаю, какая функция потерь идеально подходит для этой проблемы, я уже тестировал Среднеквадратичную ошибку и Среднюю абсолютную ошибку, но нейронная сеть всегда предсказывает одно и то же значение.

model = applications.VGG16(include_top=False, weights = None, input_shape = (256, 256, 3))

x = model.output
x = Flatten()(x)
x = Dense(1024)(x)
x=BatchNormalization()(x)
x = Activation("relu")(x)
x = Dropout(0.5)(x)
x = Dense(512)(x)
x=BatchNormalization()(x)
x = Activation("relu")(x)
x = Dropout(0.5)(x)

predictions = Dense(16,activation="sigmoid")(x)


model_final = Model(input = model.input, output = predictions)


model_final.compile(loss ='mse', optimizer = Adam(lr=0.1), metrics=['mae'])

person Tayeb Benz    schedule 30.01.2019    source источник
comment
Может ли каждый из выходов принимать любое число от 0 до 1 включительно?   -  person doctorlove    schedule 30.01.2019
comment
Да, при условии, что сумма равна 1.   -  person Tayeb Benz    schedule 30.01.2019


Ответы (1)


То, что вы описываете, больше похоже на задачу классификации, поскольку в конце вы хотите получить распределение вероятностей. Поэтому вы должны использовать softmax (например) в последнем слое и кросс-энтропию в качестве меры потерь.

person pafi    schedule 30.01.2019