Определение расстояния между двумя матрицами с помощью numpy

#python-3.x #numpy

#python-3.x #numpy

Вопрос:

Я разрабатываю свой собственный алгоритм поиска архитектуры с использованием Pythons numpy. В настоящее время я пытаюсь определить, как разработать функцию затрат, которая может видеть расстояние между X и Y или двумя матрицами. Я хотел бы уменьшить разницу между ними до значимого скалярного значения.

В идеале между 0 и 1, так что, если оба набора элементов в матрицах одинаковы численно и позиционно, возвращается 0.

В приведенном ниже примере у меня есть результат моего алгоритма X. Оба X и Y имеют одинаковую форму. Я попытался суммировать разницу между двумя матрицами; однако я не уверен, что использование суммирования будет работать во всех условиях. Я также попытался вернуть среднее значение. Я не думаю, что любой из этих подходов будет работать. Помимо перебора обеих матриц и непосредственного сравнения элементов, есть ли способ определить степень различия в скаляре?

 Y = np.arange(25).reshape(5, 5)

for i in range(1000):
    X = algorithm(Y)
    
    # I try to reduce the difference between the two matrices to a scalar value
    cost = np.sum(X-Y)
 

Ответ №1:

Существует много способов вычисления скалярной «разницы» между двумя матрицами. Вот только два примера.

  1. Среднеквадратичная ошибка:
     ((m1 - m2) ** 2).mean() ** 0.5
     
  2. Максимальная абсолютная ошибка:
     np.abs(m1 - m2).max()
     

Выбор метрики зависит от вашей проблемы.

Комментарии:

1. Я знаю, что это немного поздно … но считается ли этот первый пример нормой L2?

2. Да, это норма L2.