Несколько типов ввода в нейронной сети keras - PullRequest
0 голосов
/ 28 мая 2018

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

Мой вопрос: каков наилучший способ добавить эту дополнительную информацию в CNN?Должен ли я просто объединить числовые входы с cnn ​​в последнем плотном слое или в начале?Должен ли я кодировать числовые значения (температура, влажность и время года)?

Любая информация, ресурсы, источники будут высоко оценены, заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Если вы хотите спрогнозировать основание на этих четырех признаках, я бы посоветовал перейти с помощью cnn + rnn

, поэтому передайте изображение в cnn и возьмите логиты после этого, сделав последовательность, подобную

logits=np.array(output).flatten()

[[logits] , [temperature], [humidity] , [time_of_year]] и передайте его

rnn, Rnn будет рассматривать его как последовательность ввода.

0 голосов
/ 28 мая 2018

Вы можете обрабатывать числовые входные данные по отдельности и впоследствии объединять их, прежде чем делать окончательный прогноз:

img_in = Input(shape=(width, height, channels))
# Your usual CNN whatever it may be
img_features = SomeCNN(...)(img_in)
aux_in = Input(shape=(3,))
aux_features = Dense(24, activation='relu')(aux_in)
# Possibly add more hidden layers, then merge
merged = concatenate([img_features, aux_features])
out = Dense(num_locations, activation='softmax')(merged)
model = Model([img_in, aux_in], out)
model.compile(loss='categorical_crossentropy', ...)

По сути, вы рассматриваете их как отдельные входные данные и изучаете полезные функции, которые в совокупности позволяют вашей модели прогнозировать.То, как вы кодируете числовые входы, зависит от их типа.Для непрерывных входов, таких как температура, вы можете нормализовать значение между -1, 1, для дискретных входов очень часто бывает горячим.Вот краткое руководство .

...