У меня есть функция потерь, встроенная в tenorflow, для входа нужны логиты и метки:
def median_weight_class_loss(labels, logits):
epsilon = tf.constant(value=1e-10)
logits = logits + epsilon
softmax = tf.nn.softmax(logits)
#this is just the number of samples in each class in my dataset divided by the sum of samples 10015.
weight_sample = np.array([1113,6705,514,327,1099,115,142])/10015
weight_sample = 0.05132302/weight_sample
xent = -tf.reduce_sum(tf.multiply(labels * tf.log(softmax + epsilon), weight_sample), axis=1)
return xent
Проблема в том, что функции потерь в керасе находятся в другом формате:
custom_loss(y_true, y_pred)
он использовал y_true, y_pred в качестве входных данных,
Я нашел способ получить логиты в керасе, используя линейную активацию вместо softmax в последнем слое в моей модели.
model.add(Activation('linear'))
Но мне нужномоя модель для активации softmax на последнем слое, как вы думаете, решение?спасибо.