Нужна эта операция не для исправления ошибок. Одна и та же таблица бывает нужна в вычислении по-разному: иногда её строки должны играть роль строк, а иногда — роль столбцов. Транспонирование и есть способ посмотреть на неё со второй стороны.
Отсюда и практическое следствие. Таблица весов нашего слоя имеет форму (3, 2): три входа, два нейрона. Записанная наоборот, формой (2, 3), она в X @ W не подойдёт: рядом окажутся тройка из формы заказов и двойка из формы весов. Транспонирование ставит её нужной стороной.
В главе 3 транспонирование понадобится постоянно: при обратном проходе через слой данные идут по тем же связям в другую сторону.
Порядок осей в таблице весов важен: сначала входы, потом нейроны. Записав наоборот, вы получите одно из двух. Либо формы не сойдутся и вычисление остановится с ошибкой — это хороший случай, ошибка видна сразу. Либо число входов и число нейронов случайно совпадут, вычисление пройдёт молча и даст неверный результат. Второе опаснее.
Веса не зависят от числа заказов
Подадим в слой не четыре заказа, а сорок тысяч. Таблица весов останется той же, форма (3, 2). Изменится только первая ось результата: вместо (4, 2) станет (40000, 2).
Веса описывают правило, а не данные. Правило одно, и оно применяется ко всем примерам одинаково. Именно поэтому подобранную модель можно применить к заказу, которого она никогда не видела.
Сколько чисел в модели
Параметры — числа, которые подбирает обучение: все веса и все смещения.
В нашем слое три входа и два нейрона: 3 · 2 = 6 весов и 2 смещения, всего 8 чисел.
Возьмём слой побольше: 784 входа и 128 нейронов. Весов 784 · 128 = 100 352, смещений 128, всего 100 480 параметров. И это один слой очень скромной сети.
Когда говорят «модель на семь миллиардов», имеют в виду ровно это: сколько чисел подбирается при обучении.
Частая ошибка при подсчёте — забыть смещения. На большом слое разница почти незаметна, а на нашем маленьком смещения составляют четверть всех параметров: 2 из 8.