Всем привет! Заинтересовала строчка нахождения расстояния между векторами в коде 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. мои дилетантские рассуждения подсказывают, что да, потому что транспонирование не меняет значение матрицы...