Существуют ли два разных способа вычисления корреляции Пирсона как функции потерь? - PullRequest
0 голосов
/ 30 мая 2018

Я тренирую глубокие нейронные сети, используя корреляцию Пирсона в качестве моей функции потери.Чтобы вычислить корреляцию Пирсона (p) между предсказаниями и метками (для каждой партии), у меня есть два метода:

  1. Вычислить p строка за строкой и суммировать их, и разделить их наразмер пакета, чтобы получить среднее значение p.
  2. Вычислить p за один шаг: сгладить все прогнозы как x, пометить как y и вычислить p = pearson_loss(x,y).

Например, для ввода:

X = [[1,2],[3,4]] и Y = [[-1,-2],[-3,-4]].

  1. Вычислить первый ряд, который равен p1 = pearson_loss([1,2],[-1,-2]), а затем второй ряд, p2 = pearson_loss([3,4],[-3,-4]), и получить среднее значение p = (p1+p2)/2.
  2. Вычислить p = pearson_loss([1,2,3,4], [-1,-2,-3,-4])

Есть ли у этих двух методов огромная разница?

PS: В Tensorflow я определил потерю Пирсона, используя Keras следующим образом (используйте метод 2):

def pearson_loss(x, y):
    mx = K.mean(x)
    my = K.mean(y)
    xm, ym = x-mx, y-my
    r_num = K.sum(tf.multiply(xm,ym))
    r_den = K.sqrt(tf.multiply(K.sum(K.square(xm)), K.sum(K.square(ym))))
    r = r_num / r_den
    # ensure r is in range
    r = K.maximum(K.minimum(r, 1.0), -1.0)
    return -r
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...