Локальность и общие параметры
Вход CNN в нашем соглашении имеет shape[B,C_in,H,W], weights[C_out,C_in,k_h,k_w], bias[C_out]. Для каждого output channel суммируются локальные вклады всех input channels, после чего bias добавляется один раз:
В индексах i,j — выходная строка и столбец, s_h,s_w — stride; индекс суммы s не обозначает stride. Число параметров C_out(C_in·k_h·k_w+1) не зависит от числа пространственных позиций. ДляCin3,Cout2,kernel3×3 это56скаляров.
Feature explorer использует явно заданные kernels и синтетические channels, не выдаёт их за обученную CNN. Receptive field одной3×3операции —3×3; двух таких слоёв stride1 —5×5, а не6×6. В общем случае r_l=r_(l−1)+(k_l−1)j_(l−1), j_l=j_(l−1)s_l, гдеj—шаг соседних выходов относительно исходного входа. Dilation потребовала бы дополнительного множителя.
Отдельное обучение. Вторая лаборатория учит1×2filter на strip[1,1,0,0,1,1] сtarget[0,1,0,−1,0]. Начальныеweights[0,0], loss=.5mean(e²)=.2. Gradients[−.2,.2], приlr.5 новыйkernel[.1,−.1], loss=.162. Все patch-вклады действительно суммируются, weights обновляются одновременно. Это небольшой fit, не полноценный vision benchmark.
Исследовать. Увеличьте число channels в feature explorer и объясните count и сумму, затем отдельно пройдите training trace. Изменение learning rate не должно тайно менять kernels первой лаборатории. Теперь можно перейти от сигналов к кодированию текста, следующему узлу программы.