我尝试用成对样本实现神经网络模型。具体如下:
原始数据:
处理这些原始数据以进行实际培训:
从X_org
中随机选择2个样本(这样我们就有100*99/2个这样的组合)形成一个新的“成对”样本,预测目标,即新的y标签是两个相应的y_org
标签(y_org_sample1-y_org_sample2)的减法。现在我们有了新的X_train
和{
我需要一个更多的a NN模型(DNN,CNN,LSTM,whatever…),用它我可以将来自X_train
的一个成对样本的第一个子样本传递到模型中,得到一个结果,与第二个子样本的步骤相同。通过计算两个结果的相减,可以得到这对样本的预测。此预测将与Y_train
中相应的Y标签进行比较。在
总的来说,我需要训练一个模型(更新权重),然后给它一个“成对”的样本(两个连续的子样本)。我之所以不选择“双臂”模型(例如,通过xxx.sub()
合并两个手臂),是因为在测试过程中我只会提供一个子样本。最后,我将使用该模型预测一个子样本。在
所以我将在训练步骤中使用X_train
中的数据,而在测试步骤中使用类似X_org的数据格式。看起来有点复杂。在
看来Tensorflow对于这个任务来说更可行,如果keras也可以,请分享你的想法。在
您可以首先创建一个只包含一个X_org-like元素的模型:
现在,让我们创建第二个模型,这一次必须使用函数API,它可以同时处理两个输入:
^{pr2}$现在有两个模型:
xOrgModel
和pairWiseModel
。你可以使用其中任何一个,这取决于你正在做的任务。在两款车型都在分享各自的权重。这意味着你可以训练他们中的任何一个,另外一个也会更新。在
使用成对模型
首先,将数据组织在两个单独的数组中。(因为我们的模型使用两个输入)
使用输入列表进行训练和预测:
相关问题 更多 >
编程相关推荐