Чисто для моих собственных знаний и понимания кода и компьютеров, я пытаюсь создать массив массивов / матриц с несколькими матричными функциями, которые затем я буду использовать в любых проектах, для которых мне нужен матрица или класс массивов. Наиболее важно, что я хотел бы создать библиотеку нейронных сетей, использующую этот класс матрицы / массива, и, следовательно, требовать, чтобы она была максимально быстрой.
Функция, которая мне нужна, чтобы быть быстрой, - это вычисление матричного произведения двухМатрицы, однако, мне немного не повезло, пытаясь ускорить этот расчет с помощью больших матриц.
Мой текущий метод вычисления точечного произведения:
Обратите внимание, этот код находится вPython, однако, если Python не является оптимальным языком, я могу использовать любой другой
a = [[1, 2, 3], [4, 5, 6]]
b = [[1], [2], [3]]
def dot(a, b):
c = [[0 for j in range(len(b[i]))] for i in range(len(a))]
for i in range(len(c)):
for j in range(len(c[i])):
t = 0
for k in range(len(b)):
t += a[i][k] * b[k][j]
c[i][j] = t
return c
print(dot(a, b))
# [[14], [32]]
Я изучил Intel MKL (у меня есть Intel Core i7) и другие реализации BLAS, такие как OpenBLASОднако я не смог получить никаких результатов, которые сработали, и никакое прибегание к гуглу не может заставить их работать, поэтому мой вопрос: каков самый быстрый способ вычисления точечного произведения двух матриц? (Использование процессора и памяти в настоящее время для меня не имеет большого значения, однако было бы неплохо быть более эффективным)
PS:
Я пытаюсь сделать все это без использования внешних библиотек (numpyНапример, в Python)
***** ОБНОВЛЕНИЕ *****
Я использую Mac
***** ОБНОВЛЕНИЕ 2 *****
Спасибо всем за вашу помощь, однако я не уверен, как реализовать эти методы вычисления точечного произведения, так как мои математические навыки еще недостаточно развиты, чтобы понять, что это значит (Я еще не начал свои GCSE), хотя я буду помнить эти идеи и буду экспериментировать с этими идеями далее.
Еще раз спасибо за помощь всем.