У меня в настоящее время есть сеть ( изображение игрушечного примера ) с двумя входными слоями. in1
- это короткий плоский вектор значений, а in2
- 27-канальное изображение. Я хочу, чтобы моя сеть была структурирована на локально связанных слоях, но я не знаю хорошего способа посыпать данные in1
с помощью in2
. В настоящее время я выравниваю ветвь in2
после нескольких слоев, объединяюсь с in1
и добавляю плотные слои вперед.
Как я могу плотно представить данные in1
, поддерживая локально подключенную архитектуру? Приведенное выше изображение показывает эту цель с красной стрелкой.
Одним из возможных решений, которое я придумал, является копирование вектора in1
в виде каналов в in2
так, чтобы измерение in2
было width * height * (num_original_channels + len(in1) )
. Это кажется не элегантным, потому что это будет копировать in1
много раз. Должен быть лучший способ.
Я новичок в keras, поэтому, пожалуйста, простите мой шаткий словарный запас. Кроме того, это игрушечный пример, просто чтобы проиллюстрировать мою идею, поэтому могут быть некоторые другие / не связанные архитектурные критические замечания.
Заранее спасибо за любой совет!
fwiw, вот код, который я использую:
input1 = Input( ... ) #small flat vec
input2 = Input( ... ) #deep picture
pre = Reshape( ... )( input2 )
l1 = LocallyConnected2D( ... )( pre )
l2 = LocallyConnected2D( ... )( l1 )
l3 = LocallyConnected2D( ... )( l2 )
flat = Flatten( ... )( l3 )
merge = tensorflow.keras.layers.concatenate( [flat, input1], ... )
l4 = Dense( ... )( merge )
l5 = Dense( ... )( l4 )
output = Dense( ... )( l5 )