如何同时训练两个神经网络使其输出之间的差异最小化?

2024-09-29 01:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

对于每个事件/样本,我有一组值x1,x2,y1,y2,z,k。我有两个神经网络,我想经历两个阶段的训练。第一个神经网络以x1,x2为输入输出z,第二个神经网络以y1,y2为输入输出k

第一阶段: 分别训练具有输入x1、x2的第一个神经网络以输出z,将具有输入y1、y2的第二个神经网络训练为输出k

第二阶段: 在这里,我准备放弃z和k,我要寻找一个介于z和k之间的值h。因此,对于这个阶段,我想训练两个神经网络,以使它们的输出之间的差异最小化(即,对于每个历元,在NN2的输出上训练NN1,在NN1的输出上训练NN2。更新每个权重和偏差。然后,使用新的权重和偏差计算每个新的输出。然后,通过另一个纪元对NN1进行NN2的新输出训练,并在NN1的新输出上训练NN2)

什么机器学习包允许我这么做。我熟悉Keras(使用TensorFlow后端)。在克拉斯有可能吗?如果不是,在张量流中有可能吗?在

谢谢


Tags: 事件神经网络差异阶段经历权重偏差样本
1条回答
网友
1楼 · 发布于 2024-09-29 01:20:49

假设两个模型都是model1model2。在

让我们创建一个层来计算它们的输出之间的差异:

from keras.layers import Lambda

difference = Lambda(lambda x: x[0] - x[1])([model1.output, model2.output])

然后,让我们制作一个输出差异的模型。在

^{pr2}$

让我们编译这个模型,选择一个损失来比较与0的差异:

diffModel.compile(optimizer = 'adam', loss='mse')

让我们用零作为输出来训练它:

#if models with one input:
diffModel.fit([x,y], np.zeros(shape))

#if models with two inputs:
diffModel.fit([x1,x2,y1,y2], np.zeros(shape))

相关问题 更多 >