2

Цель: распознавание цифр с помощью нейронных сетейФункция Vector Представление Neural Networks

Описание: изображения нормализуют в 8 x 13 pixels. Для каждой строки черный пиксель представлен 1 и каждый белый белый 0. Каждое изображение, таким образом, представляется вектором векторов следующим образом: enter image description here

Проблема: возможно использовать в нейронных сетях с vector of vectors? Если нет, то каким образом изображение должно быть представлено?

  1. Объединение строк в 1 вектор?
  2. Преобразование каждой строки в десятичный формат. Пример: Стр1: 11111000 = 248 т.д.

ответ

2

Объединение их в один вектор просто конкатенации, конечно, возможно. Фактически, вы должны заметить, что произвольное переупорядочение данных не изменяет результаты, если это согласуется между обучением и классификацией.

Что касается вашего второго подхода, я думаю (я действительно не уверен), вы можете потерять некоторую информацию таким образом.

+0

Относительно вектора векторного представления. Можем ли мы, например, рассматривать каждую строку как «одно значение», а не одну. –

+1

@HaniGoc Я не специалист по нейронным сетям, но в принципе, если ваш уровень ввода имеет меньше узлов, чем у вас есть, вы уже сжимаете данные. Поэтому я полагаю, что это возможно; по моему опыту, хотя нажатие всего изображения в виде векторной функции 1D работает достаточно хорошо. –

+0

Хотя это «возможно», общая жизнеспособность этого отображения объектов сомнительна. См. Мой ответ ниже. В его случае конкатенация также не «переупорядочивание данных», а реструктуризация самой сети. – runDOSrun

1

Чтобы использовать многомерный вход, вам понадобятся многомерные нейроны (которые, я полагаю, ваш формализм не поддерживает). К сожалению, вы не указали какую-либо информацию о своей структуре сети, которая, по моему мнению, является основным источником проблем. Всякий раз, когда вы оцениваете представление функции, вам нужно знать, как будет структурирован входной уровень: если это непрактично, вам, вероятно, потребуется другое представление.

Ваш многомерный вектор: Сеть, которая принимает 1 изображение в качестве входных данных, имеет только 1 (!) Входной узел, содержащий несколько векторов (соответственно строк). Это худшее Возможное представление ваших данных. Если мы:

  • сгладить входную иерархию: мы получаем 1 входной нейрон для каждой строки.
  • полностью сгладить входную иерархию: мы получаем 1 входной нейрон для каждого пикселя.

Подумайте обо всех трех подходах и о том, что они делают с вашими данными. Последний подход почти всегда так же плох, как и первый подход. Нейронные сети работают лучше всего с функциями. Особенности не являются реструктуризацией пикселей (ваши векторы строк). Они должны быть META-данными, которые вы можете получить из пикселей: Яркость, места, где мы переходим от белого к белому, ограничивающие прямоугольники, кромки, формы, массы тяжести ... есть тонны вещей, которые можно выбрать как функции в изображении обработка. Вы должны подумать о своей проблеме и выбрать один (или более).

В конце концов, когда вы спрашиваете о том, как «объединить строки в один вектор»: вы просто перефразируете «поиск вектор-функции для всего изображения». Вы определенно не хотите «конкатенировать» ваши векторы и загружать необработанные данные в сеть, вам нужно найти информацию, прежде чем использовать сеть. Это важно для предварительной обработки.

Для получения дополнительной информации о том, какие функции могут быть жизнеспособными для OCR, просто прочитайте некоторые документы. Наиболее успешной сетью atm является Convolutional Neural Network. Отправной точкой для выделения функции темы является here.

1

1) Да объединить в один вектор подходит я использовать этот способ http://vimeo.com/52775200

2) Нет, это не подходит, потому что после нормализации из звенели (0-255) -> в диапазоне (0 - 1) differt строки дает aprox одинаковые значения, поэтому теряют данные

Смежные вопросы