Я весь день гуглял, пытаясь найти пример функционального ввода для двух параллельных наборов данных в Keras, но я не могу найти один.
Моя проблема в том, что у меня есть набор данных 1, набор изображений людей, выполняющих различные действия. Он отформатирован в формате csv следующим образом:
image_url,class
example1.png,BRUSH_TEETH
example2,BRUSH_TEETH
...
example10000.png,DANCING
Я предварительно обработаю их и сделаю их размером 64x64. Моим вторым набором данных будут данные о скачках движения, где каждая строка представляет собой информацию, захваченную одновременно с соответствующей строкой в наборе данных 1
(игнорировать имена и значения столбцов, я пока не уверен, как они будут выглядеть, поскольку я не собрал данные, но они будут одной строкой и параллельны указанному выше набору данных1)
x,y,z,a,b,c,d,class
1,2,3,4,5,6,7,BRUSH_TEETH
8,9,10,3,1,3,4,BRUSH_TEETH
...
1,2,3,4,5,6,7,DANCING
Я читал о функциональном API, и мне кажется, что я могу запустить объект данных из набора данных через CNN, в то же время выполняя тот же объект данных из набора данных через, например, глубокую MLP. Затем, используя объединение или объединение, перенесите два выходных сигнала из их последних слоев в другой глубокий MLP и затем, наконец, свяжите эту окончательную объединенную модель с выходным сигналом
Забыв про CNN на минуту, API дает простой пример слияния:
import keras
input1 = keras.layers.Input(shape=(16,))
x1 = keras.layers.Dense(8, activation='relu')(input1)
input2 = keras.layers.Input(shape=(32,))
x2 = keras.layers.Dense(8, activation='relu')(input2)
# equivalent to added = keras.layers.add([x1, x2])
added = keras.layers.Add()([x1, x2])
out = keras.layers.Dense(4)(added)
model = keras.models.Model(inputs=[input1, input2], outputs=out)
Моя проблема заключается в том, что мне нужно подать input1 (в форме CNN) изображение, содержащееся в csv, и в то же время подать input2 с коррелирующей строкой во втором наборе данных, содержащем данные Leap Motion. PS: как в вышеупомянутом я продолжу модель после слияния с двумя плотными слоями перед выводом? Было бы просто так:
x3 = keras.layers.Dense(100)(added)
x3 = keras.layers.Dense(50)(x3)
out = keras.layers.Dense(4)(x3)
Возможно ли это выполнить? Если это так, я бы по достоинству оценил бы руку помощи, я схожу с ума, пытаясь понять, как эти два набора данных будут синхронизированы друг с другом!
Пример сценария, с которым я могу попробовать и поиграть, был бы превосходен, так как я относительно новичок в среде Keras
Большое спасибо!