2016-08-16 7 views
1

Я очень новичок в нейронной сети, но для моего проекта они, похоже, подходят. Приложение должно запускаться на Android-телефоне в конце. Моя идея - использовать TenserFlow, но я не уверен, что он подходит.Повторное использование нейронной сети

У меня есть следующая ситуация, Мой ввод - это набор изображений (порядок их не должен оказывать никакого влияния на выход). Размер Set не фиксирован, но в большинстве случаев ниже 10. Мой вывод для всего набора - это просто двоичная категоризация (Pass/Fail).

У меня будет свернутая нейронная сеть, которая вычисляет два выхода, вес и значение пропуска/отказа. Каждое изображение передается отдельно этому CNN, полученные значения затем агрегируются в окончательное значение pass/fail, используя взвешенное среднее арифметическое.

Мой вопрос: могу ли я обучить такую ​​сеть TensorFlow?

У меня нет значений для выходов CNN в моих данных обучения, но только выходы после агрегации. Возможно ли это вообще с градиентной ориентированной структурой или мне нужно использовать алгоритм Genetic Algorithm для этого.

ответ

0

Вы можете определенно сделать это с помощью тензорного потока. После того, как вы сделали вводные уроки, вы должны посмотреть на CNN tutorial, чтобы узнать, как реализовать сверточную нейронную сеть в тензорном потоке. Весь тяжелый подъем уже позаботился. Все, что вам нужно сделать, это использовать метод tf.nn.conv2d() для создания сверточного слоя, а затем использовать один из методов объединения и нормализации и т. Д. Если вы не знакомы с тем, что это значит, вы должны read up, но в двух словах, есть три уникальных компонента для CNN. Сверточный слой просматривает окно через изображение, которое ищет определенные шаблоны, и его активация записывается на выходе в виде сетки. Для обучения важно уменьшить размерность данных, и это то, что делает слой объединения; он берет выход сверточного слоя и уменьшает его размер. Уровень нормализации, чем нормализует это, потому что нормализованные данные имеют тенденцию улучшать обучение.

Если у вас есть только совокупные выходы, вам нужно подумать о способе придумать разумные прокси-выходы для отдельных изображений. Одна вещь, которую вы можете сделать, - просто использовать совокупный вывод в виде меток для каждого отдельного изображения в наборе и использовать спуск градиента для тренировки.

+0

Исходя из разумных прокси, это будет не так просто. Я сомневаюсь, что использование ярлыков будет работать, потому что некоторые изображения будут очень важны для конечного результата, а некоторые - едва ли. Я думаю, что я немного прочитаю о подходах с генетическими алгоритмами, которые могут быть полезны для моей проблемы. –

+0

Я не уверен, что выбор алгоритма здесь. Проблема состоит в том, что конечный результат должен быть средним для выходов каждого изображения в выборке, но у вас есть только конечные выходы. Исходя из этого, невозможно понять, какое изображение оказало наибольшее влияние на результат. Однако, если у вас много наборов тренировок, вы можете начать делать это на основе того, что некоторые типы изображений чаще встречаются в примерах, которые проходят, а определенные изображения становятся менее частыми. –

+0

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

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