모델을 구성하면서 데이터가 이미지, 텍스트 정보, 메타 데이터(나날짜 및 숫자)가 존재할 수 있다. 이를 쉽게 표현을 하면 아래와 같다.
이를 위한 모델을 만들기 위해서는 각각의 모델을 만들어서 합치는 경우도 생각할 수 있지만, 이를 한번에 학습하는 방법이 존재하는데 이는 keras functional api를 활용할 수 있다.
위의 이미지처럼 Numeric + Categorical Data / Image Data가 존재하는데 각각의 목적에 맞는 모델을 생성하여 최종적으로 결과를 출력해주는 형태이다.
전체적인 과정은 아래와 같으며 일반적인 방법과 크게 차이가 없다.
Keras의 경우에는 다양한 복잡한 모델을 설계할 수 있다.
# Multiple Inputs and Mixed Data
# define two sets of inputs
inputA = Input(shape=(32,))
inputB = Input(shape=(128,))
# the first branch operates on the first input
x = Dense(8, activation="relu")(inputA)
x = Dense(4, activation="relu")(x)
x = Model(inputs=inputA, outputs=x)
# the second branch opreates on the second input
y = Dense(64, activation="relu")(inputB)
y = Dense(32, activation="relu")(y)
y = Dense(4, activation="relu")(y)
y = Model(inputs=inputB, outputs=y)
# combine the output of the two branches
combined = concatenate([x.output, y.output])
# apply a FC layer and then a regression prediction on the
# combined outputs
z = Dense(2, activation="relu")(combined)
z = Dense(1, activation="linear")(z)
# our model will accept the inputs of the two branches and
# then output a single value
model = Model(inputs=[x.input, y.input], outputs=z)