Keras - Implementation of custom loss function with multiple outputs
As you are mixing y_true[0] with y_pred[0] and y_true[1] with y_pred[1], you could consider having different losses for each, and using loss={'Output_Dist': custom_loss, 'Output_Value': losses.MSE} when compiling. Internally, it will add the result of each one in a final loss.
def custom_loss(y_true, y_pred):
    return -K.dot(K.transpose(y_true), y_pred)