2016-12-06 2 views
1

Я хочу обучить регрессионную сеть, ее выходы - две координаты (x1, y1) и (x2, y2). мой вопрос: если я хочу тренировать сеть, если мой выход будет разделен? Я имею в виду должен мой выход, как это:Как тренировать сеть с выходом 2D? (python, Keras)

[x1,y1,x2,y2] 

или есть способ укладывать их, как:

[(x1,y1),(x2,y2)] 

Заранее спасибо

+0

Вы можете, очевидно, изменить выход, чтобы добавить измерение; сеть все равно может вернуть вектор. Я думаю, вопрос в том, почему вы хотите 2D-выход - существуют ли дополнительные ограничения на выходные значения? –

+0

Это конкретные координаты, и я сомневаюсь, что если я передам его в сеть, например [x1, y1, x2, y2], сеть не будет рассматривать связь между ними, поэтому я хочу передать ее в такую ​​сеть. Я прав? – Panda

+0

, а также как установить настройку плотного слоя для [(x1, y1), ...], я имею в виду, каково должно быть количество выходных нейронов в этом? model.add (Dense (2, init = 'uniform', activation = 'sigmoid')) – Panda

ответ

1

The RepeatVector есть для этой цели (см Keras документация).

Вы хотите, чтобы ваша форма вывода была (2, 2), или массив из двух координат с двумя входами каждый.

num_outputs = 2 
num_elements = 2 

После добавления слоев для обработки ввода в сеть, добавить RepeatVector. Это позволит получить массив данных в качестве вывода. Ваш последний слой должен выводить num_elements так, например:

model.add(RepeatVector(num_outputs)) 
# Optional layers can be inserted here 
model.add(Dense(num_elements)) 

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

+0

Спасибо, но меняет ли результат по сравнению с [x1, x2, ...]? – Panda

+0

Я знаю, что это может быть эффективно в autoencoders, как насчет CNN? – Panda

+0

Мое образованное предположение: возможно, нет, если местоположения x1, x2 и т. Д. Не меняются во входных данных, и вы знаете, как анализировать координаты с выхода. Я бы рассматривал CNN как эффективный способ изучения функций из изображений и не думаю, что они сильно влияют на смысл вашего вывода. Большинство сетей в конечном итоге имеют плотные слои после сверточных. – milez