Python Keras 中的多个输出
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/44036971/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Multiple outputs in Keras
提问by Neelabh Pant
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
, which says x1, y1
are coordinates and att's
are the other attributes attached to the occurrence of x1, y1
coordinates. Based on this predictor set I want to predict x2, y2
. This is a time series problem, which I am trying to solve using multiple regresssion.
My question is how do I setup keras, which can give me 2 outputs in the final layer. I have solved simple regression problem in keras and the code is avaialable in my github.
我有一个问题,当给定一个预测变量向量时,它处理预测两个输出。假设一个预测向量看起来像x1, y1, att1, att2, ..., attn
,它表示x1, y1
是坐标,并且att's
是附加到x1, y1
坐标出现的其他属性。基于这个预测器集,我想预测x2, y2
. 这是一个时间序列问题,我试图使用多重回归来解决。我的问题是如何设置 keras,它可以在最后一层给我 2 个输出。我已经解决了 keras 中的简单回归问题,代码在我的 github 中可用。
回答by Daniel M?ller
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=...)