У підручнику MNist від Google за допомогою TensorFlow викладається обчислення, в якому один крок еквівалентний множенню матриці на вектор. Google спочатку показує малюнок, на якому кожне числове множення та додавання, яке б вдалося виконати обчислення, виписується повністю. Далі вони показують малюнок, на якому він замість цього виражається як матричне множення, стверджуючи, що ця версія обчислення є або, принаймні, може бути швидшою:
Якщо записати це як рівняння, отримаємо:
Ми можемо «векторизувати» цю процедуру, перетворивши її на матричне множення та векторне додавання. Це корисно для обчислювальної ефективності. (Це також корисний спосіб думати.)
Я знаю, що такі рівняння, як правило, записуються у форматі множення матриць практикуючими машинним навчанням, і, звичайно, можна побачити переваги в цьому з точки зору терміновості коду чи розуміння математики. Чого я не розумію, це твердження Google про те, що перетворення з довільної форми в матричну форму "корисно для обчислювальної ефективності"
Коли, чому і як можна було б покращити продуктивність програмного забезпечення, виражаючи обчислення як матричне множення? Якби я обчислював множення матриці у другому (на основі матриці) зображенні сам, як людина, я би робив це, послідовно виконуючи кожен із чітких обчислень, показаних на першому (скалярному) зображенні. Для мене вони - це не що інше, як два позначення для однієї і тієї ж послідовності обчислень. Чому для мого комп’ютера це відрізняється? Чому комп'ютер міг би виконати обчислення матриці швидше, ніж скалярний?