Несколько выходов в Keras

у меня есть проблема, которая касается прогнозирования двух выходов при заданном векторе предикторов. Предположим, что вектор предиктора выглядит как x1, y1, att1, att2, ..., attn, который сказал x1, y1 координаты и att's являются ли другие атрибуты, прикрепленные к возникновению x1, y1 координаты. На основе этого набора предикторов я хочу предсказать x2, y2. Это проблема временных рядов, которые я пытаюсь решить, используя несколько regresssion. Мой вопрос в том, как настроить keras, который может дать мне 2 выхода в последний слой. Я решил простую проблему регрессии в keras, и код доступен в мой github.

1 ответов


from keras.models import Model
from keras.layers import *    

#inp is a "tensor", that can be passed when calling other layers to produce an output 
inp = Input((10,)) #supposing you have ten numeric values as input 


#here, SomeLayer() is defining a layer, 
#and calling it with (inp) produces the output tensor x
x = SomeLayer(blablabla)(inp) 
x = SomeOtherLayer(blablabla)(x) #here, I just replace x, because this intermediate output is not interesting to keep


#here, I want to keep the two different outputs for defining the model
#notice that both left and right are called with the same input x, creating a fork
out1 = LeftSideLastLayer(balbalba)(x)    
out2 = RightSideLastLayer(banblabala)(x)


#here, you define which path you will follow in the graph you've drawn with layers
#notice the two outputs passed in a list, telling the model I want it to have two outputs.
model = Model(inp, [out1,out2])
model.compile(optimizer = ...., loss = ....) #loss can be one for both sides or a list with different loss functions for out1 and out2    

model.fit(inputData,[outputYLeft, outputYRight], epochs=..., batch_size=...)