Я пытаюсь реализовать одну скрытую сетевую сеть для распознавания цифр MNIST в Python.Neural Net Setup
Как следующее:
h1
x1 z1
h2
x2 z2
1 h3
1
Я использую скрытый слой размером 200
Количество функций для цифр 784.
Количество классов 10 .
Каждая метка преобразуется в вектор длиной 10, который имеет один 1 в позиции истинного класса и 0 в другом месте.
между входным и скрытым слоем, я буду использовать 200 по 785 В. Матрица
Matrix V: I, J - вход представляет собой вес, соединяющий блок его во входном слое i-й блок в скрытом слое. I-я строка V представляет собой совокупность весов, подаваемых в i-й скрытый блок.
Между скрытым в выходном слое, я собираюсь применить матрицу W, которая 10 по 201.
Матрицы W: I, J - вход представляет собой вес, соединяющий блок его в скрытый слой на i-й блок в выходном слое. I-й ряд W представляет собой совокупность весов, подаваемых в i-й выходной блок.
Итак, я начинаю с матрицы ввода, которая равна n 784. Может ли кто-нибудь объяснить, что делать? Что мне нужно, чтобы умножить его на, а затем, что/как я могу умножить результат? Я не уверен, как именно умножить эти матрицы.
(Давайте называть функции активации F().)
Я немного смущен размерами матриц и не уверен, когда/где/как именно использовать V и W.
[This] (http://neuralnetworksanddeeplearning.com/) - это приятное и всестороннее введение в нейронные сети и способ внедрения нейронной сети для классификации набора данных MNIST в python. – sietschie
Я сломаю это для вас, но вам нужно больше узнать о NN, чтобы понять, как это работает (не забывайте, что программирование - это 90% обучения/планирования и 10% кодирования). Таким образом, размер ввода n x 785, а скрытый dim - n x 200. Веса (w) определяются как: w = transpose (input_dims) * hidden_dims. Вы должны использовать транспонирование, чтобы привести ваши данные в нужную форму для матричного умножения: w = 785 x n * n x 200. Это даст вам размер 785x200, который является желаемым результатом. (здесь * означает умножение матрицы). – TasosGlrs