9 / 24 · Теория
Эталон прямой свёртки
Для входов [2,3], весов [4,−1] и bias один какой неверный результат получится, если bias добавлять один раз на итерацию входного канала?
Уроки доступны бесплатно. Запишитесь, чтобы сохранять прогресс.
Предпочитайте исследуемый эталон
Золотая модель ставит видимую спецификацию выше скорости. Перебирайте выходной канал, выходную строку и столбец; затем суммируйте по входному каналу и строке и столбцу ядра. Вычисляйте каждую входную координату и подавайте ноль вне границ. Это выявляет первый неверный выход и точный расходящийся член. Модель не обязана повторять оптимизированный аппаратный порядок циклов.
Инициализируйте аккумулятор значением b[m] один раз на выход. Добавление внутри суммы повторяло бы bias. В целочисленной модели x и w — центрированные коды, bias использует масштаб произведения.
Разобранный многоканальный пример
Используйте два входных канала 1×1 со значениями два и три. Выходной канал ноль имеет веса [4,−1] и bias один, давая 1+8−3=6. Выходной канал один имеет веса [−2,5] и bias −1, давая −1−4+15=10. Общий аккумулятор должен независимо начать второй выход вместо сохранения первого результата.
Для входа [1,2,3;4,5,6;7,8,9] и ядра [1,2;3,4] ожидайте [37,47;67,77]. Первые записанные произведения — 1,4,12,20. Следующие — 2,6,15,24. Исследуйте рассчитанную вручную позицию; одни итоговые значения могут скрывать компенсирующие ошибки.
Сравните прямую модель с отдельно структурированной моделью окна и скалярного произведения. Общая адресная функция в обеих может дать общую ошибку. Совмещайте независимую структуру с ручными примерами. Делайте случайные начальные значения воспроизводимыми и сохраняйте ошибочный тензор. Сравнивайте непреобразованный аккумулятор и итоговый выходной код для локализации числовых ошибок.
Наша model.mjs принимает X[C][H][W] и W[M][C/G][R][S] с одним неявным пакетом. Она проверяет прямоугольность тензоров, совместимость каналов и группы. Она не импортирует модели фреймворков. Используйте различающиеся значения, отрицательные числа и асимметричные веса вместо полностью нулевого набора. Сравните соглашения с ONNX Conv, документируя ограничения учебной модели.
Попробуйте сами
Для входов [2,3], весов [4,−1] и bias один какой неверный результат получится, если bias добавлять один раз на итерацию входного канала?
Прочитать объяснение
Правильный результат — 1+8−3=6. Повторение bias дважды даёт 8−3+2=7. Инициализируйте bias вне суммирования каналов.