#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:
Существует много способов вычисления скалярной «разницы» между двумя матрицами. Вот только два примера.
- Среднеквадратичная ошибка:
((m1 - m2) ** 2).mean() ** 0.5
- Максимальная абсолютная ошибка:
np.abs(m1 - m2).max()
Выбор метрики зависит от вашей проблемы.
Комментарии:
1. Я знаю, что это немного поздно … но считается ли этот первый пример нормой L2?
2. Да, это норма L2.