Нейронные сети представления вектора признаков

Цель: распознавание цифр с помощью нейронных сетей.

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

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

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

person Hani Goc    schedule 01.12.2014    source источник


Ответы (3)


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

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

person Bartek Banachewicz    schedule 01.12.2014
comment
По поводу вектора векторного представления. Можем ли мы, например, рассматривать каждую строку как single value, а не одну. - person Hani Goc; 01.12.2014
comment
@HaniGoc Я не эксперт по нейронным сетям, но в принципе, если в вашем входном слое меньше узлов, чем функций, вы уже сжимаете данные. Поэтому я полагаю, что это возможно; по моему опыту, хотя перемещение всего изображения в виде вектора 1D-функций работает достаточно хорошо. - person Bartek Banachewicz; 01.12.2014
comment
Хотя это возможно, общая жизнеспособность этого сопоставления функций сомнительна. Смотрите мой ответ ниже. В его случае конкатенация также является не переупорядочением данных, а реструктуризацией самой сети. - person runDOSrun; 05.12.2014

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

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

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

Подумайте обо всех трех подходах и о том, что они делают с вашими данными. Последний подход почти всегда так же плох, как и первый подход. Нейронные сети лучше всего работают с функциями. Функции — это не реструктуризация пикселей (ваших векторов-строк). Это должны быть МЕТА-данные, которые вы можете получить из пикселей: яркость, места, где мы переходим от обратного к белому, ограничительные рамки, края, формы, массы гравитации, ... есть множество вещей, которые можно выбрать в качестве функций на изображении. обработка. Вы должны подумать о своей проблеме и выбрать одну (или несколько).

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

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

person runDOSrun    schedule 05.12.2014

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

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

person Birol Kuyumcu    schedule 05.12.2014