Как передать дополнительные данные вместе с изображением на CNN? - PullRequest
2 голосов
/ 28 мая 2020

Примечание: я использую TensorFlow для создания своей нейронной сети.

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

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

Мой вопрос: Есть ли способ добавить данные в нейронную сеть после сверточного слоя, который как дополнительные данные могут пропустить мимо сверточных слоев и go непосредственно на плотный слой с изображением после того, как изображение уже обработано и сглажено? Если это невозможно, есть ли лучший способ передачи дополнительных данных вместе с изображением в нейронную сеть с сверточными слоями?

1 Ответ

3 голосов
/ 28 мая 2020

Tensorflow поддерживает глубокие сети с несколькими входами. Вот игрушечный пример сети с изображением и векторным вводом:

from tensorflow.keras.layers import Input, Conv2D, Dense, Activation, Flatten, concatenate
from tensorflow.keras.models import Model

image_input = Input((64,64,3))
x = Conv2D(32, kernel_size=8, strides=4)(image_input)
x = Flatten()(x)
x = Dense(64)(x)

vector_input = Input((10,))
y = Dense(64)(vector_input)

z = concatenate([x, y])
z = Dense(64)(z)
z = Activation('softmax')(z)

model = Model([image_input, vector_input], [z])
...