Keras:使用暹罗网络进行回归吗?

时间:2018-08-16 08:09:59

标签: machine-learning keras regression

我有4个具有相同功能的数据集。当我将其中任意三个结合起来以训练密集的神经网络并使用最后一组进行测试时,我得到了很高的误差标准差。因此,我想使用一个连体网络来减少标准差,因为我发现我的问题与单发分类问题非常相似,但是我不想发现差异的程度,而是希望我的网络在训练集和将它们用于预测我的测试集的值。但是我在设计这样的网络时遇到了困难:


enter image description here

您会看到我的每个训练集都有不同数量的样本,理想情况下,我希望在输出层上有4 + 3 + 2个样本,因此前4个样本属于第一个测试集,第二个3属于第二个测试集,依此类推。不幸的是我的代码不起作用:

import numpy as np
from keras.models import Model
from keras.layers import Dense, Input, Concatenate
from keras import optimizers

trainX1 = np.array([[1,2],[3,4],[5,6],[7,8]])   # fake training data
trainY1 = np.array([[1],[2],[3],[4]])           # fake label

trainX2 = np.array([[2,3],[4,5],[6,7]])
trainY2 = np.array([[1],[2],[3]])

trainX3 = np.array([[0,1],[2,3]])
trainY3 = np.array([[1],[2]])

numFeatures = 2
trainXList = [trainX1, trainX2, trainX3]
trainYStack = np.vstack((trainY1,trainY2,trainY3))
inputList = []
modelList = []
for i,_ in enumerate(trainXList):
    tempInput= Input(shape = (numFeatures,))
    m = Dense(10, activation='tanh')(tempInput)
    inputList.append(tempInput)
    modelList.append(m)

mAll = Concatenate()(modelList)
out = Dense(1, activation='tanh')(mAll)
model = Model(inputs=inputList, outputs=out)

rmsp = optimizers.rmsprop(lr=0.00001)
model.compile(optimizer=rmsp,loss='mse', dropout = 0.1)
model.fit(trainXList, trainYStack, epochs = 1, verbose=0)

所以我的问题是:

  1. 是否可以使用暹罗网络进行回归?并且如果可能的话,误差是否会小于经过3个训练集训练的DNN?

  2. 我觉得我的网络设计可能有效,但可能效率不高。是否有暹罗网络比我的设计更适合回归?

  3. 我可以知道如何使我的代码运行吗??

非常感谢!

0 个答案:

没有答案