Multiple outputs in Keras

前端 未结 2 784
你的背包
你的背包 2020-12-05 00:30

I have a problem which deals with predicting two outputs when given a vector of predictors. Assume that a predictor vector looks like x1, y1, att1, att2, ..., attn

2条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-05 00:44

    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=...)
    

提交回复
热议问题