keras多输入多输出,keras训练过程的输出
Keras可以通过其函数式API处理多个输入(甚至多个输出)。API的功能与顺序API相反(您之前几乎肯定是通过顺序类使用的),可以用来定义更复杂的非顺序模型,包括:
多输入模型多输出模型是一种既有多输入又有多输出的模型。有向无环图是一种具有共享层的模型。例如,我们可以将简单的顺序神经网络定义为:
模型=顺序()
model.add(Dense(8,input_shape=(10,),activation=relu ))
model.add(Dense(4,activation=relu ))
Model.add (dense (1,activation= linear ))。这个网络是一个简单的前馈神经网络,没有10个输入。第一个隐藏层有8个节点,第二个隐藏层有4个节点,最后一个输出层用于回归。
我们可以使用函数式API定义一个示例神经网络:
输入=输入(shape=(10,))
x=密集(8,激活=relu )(输入)
x=Dense(4,activation=relu)(x)
x=密集(1,激活=线性)(x)
Model=Model(inputs,x)请注意我们不再依赖于顺序类。要查看Keras function API的强大功能,请考虑下面的代码,我们在其中创建了一个接受多个输入的模型:
#定义两组输入
inputA=Input(shape=(32,)
inputB=Input(shape=(128,))
#第一个分支对第一个输入进行操作
x=Dense(8,activation=relu )(输入)
x=Dense(4,activation=relu)(x)
x=模型(输入=输入,输出=x)
#第二个分支对第二个输入进行运算
y=Dense(64,activation=relu)(inputB)
y=密集(32,激活=relu)(y)
y=密集(4,激活=relu)(y)
y=模型(输入=输入b,输出=y)
#合并两个分支的输出
组合=concatenate([x.output,y.output])
#应用FC层,然后在
#组合输出
z=Dense(2,activation=relu )(组合)
z=密集(1,激活=线性)(z)
#我们的模型将接受两个分支的输入
#然后输出单个值
Model=model (inputs=[x.input,y.input],outputs=z)在这里,可以看到我们为Keras神经网络定义了两个输入:
输入:32-dim
输入的第2行:128-DIM使用Keras的函数式API定义了一个简单的32-8-4网络。类似地,第3行定义了一个128-64-32-4网络。然后我们在第17行合并X和Y的输出。x和y的输出都是四维的,所以一旦我们把它们连接起来,我们就有了一个8维的向量。然后,我们在第21行和第22行应用两个完整的连接层。第一层有2个节点,然后ReLU激活,第二层只有一个节点线性激活(也就是我们的回归预测)。构建多输入模型的最后一步是定义模型对象,它:
我们接受的两个输入将输出定义为最终的FC层集(即Z)。如果您想使用Keras来可视化模型架构,它将如下所示:
注意,我们的模型有两个不同的分支。第一个分支接受我们的128维输入,而第二个分支接受32维输入。这些分支相互独立运行,直到它们被连接起来。从那里输出一个网络值。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。