Как правило, вход для одного нейрона представляет собой значение от 0 до 1. Это соглашение не только для простоты реализации, но и потому, что нормализация входных значений к одному и тому же диапазону гарантирует, что каждый вход имеет одинаковые весовые коэффициенты. (Если у вас есть несколько изображений с 8-битным цветом со значениями пикселей от 0 до 7 и некоторые изображения с 16-битным цветом со значениями пикселей от 0 до 255, вы, вероятно, не захотите отдавать предпочтение 24-битным цветным изображениям только потому, что числовые значения выше. Точно так же вы, вероятно, захотите, чтобы ваши изображения были одинакового размера.)
Что касается использования значений пикселей в качестве входных данных, очень часто пытаются собрать представление изображения более высокого уровня, чем его пиксели ( больше информации ). Например, для изображения серой шкалы 5 x 5 (нормализовано):
[1 1 1 1 1]
[0 0 1 0 0]
[0 0 1 0 0]
[0 0 1 0 0]
[0 0 1 0 0]
Мы могли бы использовать следующие матрицы элементов, чтобы помочь обнаружить горизонтальные, вертикальные и диагональные элементы изображений. См. обнаружение лица python haar для получения дополнительной информации.
[1 1] [0 0] [1 0] [0 1] [1 0], [0 1]
[0 0], [1 1], [1 0], [0 1], [0 1], [1 0]
Чтобы построить входной вектор, v , для этого изображения возьмите первую матрицу объектов 2x2 и «примените» ее с поэлементным умножением к первой позиции в изображении. Применение
[1 1] (the first feature matrix) to [1 1] (the first position in the image)
[0 0] [0 0]
приведет к 2, потому что 1 * 1 + 1 * 1 + 0 * 0 + 0 * 0 = 2. Добавьте 2 к обратной стороне вашего входного вектора для этого изображения. Затем переместите эту матрицу объектов на следующую позицию, одну справа, и примените ее снова, добавив результат во входной вектор. Делайте это повторно для каждой позиции матрицы объектов и для каждой из матриц объектов. Это создаст ваш входной вектор для одного изображения. Убедитесь, что вы строите векторы в одинаковом порядке для каждого изображения.
В этом случае изображение черно-белое, но с помощью значений RGB вы можете расширить алгоритм, чтобы выполнить те же вычисления, но добавить 3 значения к входному вектору для каждого пикселя - по одному для каждого цвета. Это должно обеспечить вас одним входным вектором для каждого изображения и одним входом для каждого нейрона. Затем векторы должны быть нормализованы перед запуском по сети.