Altifigence Academy

9 / 24 · Теория

Эталон прямой свёртки

Для входов [2,3], весов [4,−1] и bias один какой неверный результат получится, если bias добавлять один раз на итерацию входного канала?

Предпочитайте исследуемый эталон

Золотая модель ставит видимую спецификацию выше скорости. Перебирайте выходной канал, выходную строку и столбец; затем суммируйте по входному каналу и строке и столбцу ядра. Вычисляйте каждую входную координату и подавайте ноль вне границ. Это выявляет первый неверный выход и точный расходящийся член. Модель не обязана повторять оптимизированный аппаратный порядок циклов.

y[m,h,w]=b[m]+∑c∑r∑sx[c,hSh−Pt+rDh,wSw−Pl+sDw]w[m,c,r,s]y[m,h,w]=b[m]+\sum_c\sum_r\sum_s x[c,hS_h-P_t+rD_h,wS_w-P_l+sD_w]w[m,c,r,s]

Инициализируйте аккумулятор значением 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 вне суммирования каналов.

Выбор действует в этом браузере. Его можно изменить внизу страницы.