Да, вы на правильном пути.Существует слой с весовой матрицей 4320 записей.
Эта матрица обычно имеет размер 432x10.Это потому, что эти 432 числа являются представлением фиксированного размера входного изображения.На данный момент вам не важно, как вы его получили - CNN, прямая прямая связь или сумасшедший RNN, попиксельный, просто хотите превратить описание в классификацию.В большинстве наборов инструментов (например, TensorFlow
, PyTorch
или даже просто numpy
) вам необходимо явно преобразовать вывод пула 3x12x12 в вектор длиной 432.Но это всего лишь перестановка, отдельные элементы не меняются.
Кроме того, обычно будет вектор смещений длиной 10 * , по одному на каждый выходной элемент.
Наконец о нелинейности : Поскольку речь идет о классификации, вы обычно хотите, чтобы выходные 10 единиц представляли апостериорные вероятности того, что входные данные принадлежат определенному классу (цифре).Для этого используется функция softmax : y = exp(o) / sum(exp(o))
, где exp(o)
обозначает поэлементное возведение в степень.Это гарантирует, что его вывод будет правильным категориальным распределением, все элементы в <0;1> и суммируя до 1. В книге Deep Learning есть подробное обсуждение softmax в нейронных сетях (я рекомендую прочитать Раздел 6.2.1 в дополнение к самому подразделу softmax.)
Также обратите внимание, что это вообще не относится к сверточным сетям, вы найдете этот блок fully connected layer
- softmax
в конце практически каждой сети классификации .Вы также можете рассматривать этот блок как фактический классификатор, в то время как все, что перед ним (мелкий CNN в вашем случае) просто пытается подготовить хорошие функции.