Всем привет! Заинтересовала строчка нахождения расстояния между векторами в коде Python:
Код:
D = -2*np.dot(self.W, X.T)[None,:] + (self.W**2).sum(1)[:, None] + ((self.X**2).sum(1)[:, None]).T
На сколько я понял, здесь расстояние между векторами считается как
, где
это матрицы
Интересует первый одночлен
, у меня следующая размерность:
и
т.к. размерности разные у
и
перемножить их напрямую нельзя, но в коде Python это выглядит как:
Собственно вопрос чисто алгебраический, если размерность двух матриц не совпадает, можно ли транспонировать множитель (матрица
) и выполнить операцию умножение? Всегда ли это корректно будет?
p.s. мои дилетантские рассуждения подсказывают, что да, потому что транспонирование не меняет значение матрицы...