web-dev-qa-db-fra.com

Plusieurs sorties en keras

J'ai un problème qui concerne la prédiction de deux sorties lorsqu'un vecteur de prédicteurs est donné. Supposons qu'un vecteur prédictif ressemble à x1, y1, att1, att2, ..., attn, qui dit x1, y1 sont des coordonnées et att's sont les autres attributs liés à l'occurrence de x1, y1 _ coordonnées. Sur la base de cet ensemble de prédicteurs, je veux prédire x2, y2. C’est un problème de série chronologique que j’essaie de résoudre à l’aide de régressions multiples. Ma question est de savoir comment configurer keras, qui peut me donner 2 sorties dans la couche finale. J'ai résolu le problème de régression simple dans keras et le code est disponible dans mon github .

24
Neelabh Pant
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=...)
32
Daniel Möller