结合keras / theano中的神经网络

时间:2016-06-27 08:38:20

标签: python neural-network theano keras

我正在尝试解决排名问题。基本上,给定查询,排名者应该返回根据实体的相关性值排序的实体列表。

我在Keras中训练了一个简单的神经网络(使用Theano作为后端),它接受一个查询 - 实体对(即(q,e)对)并给出相关性评级作为输出(此编号显示相关性)实体查询)。

此代码如下:

# Create the model
np.random.seed(1)   # Just for reproducibility of results

model = Sequential()
model.add(Dense(input_dim=x.shape[1],
                output_dim=50,
                init='uniform',
                activation='tanh'))

model.add(Dense(input_dim=50,
                output_dim=50,
                init='uniform',
                activation='tanh'))

model.add(Dense(input_dim=50,
                output_dim=10,
                init='uniform',
                activation='tanh'))

model.add(Dense(input_dim=10,
                output_dim=1,
                init='uniform',
                activation='linear'))

optimizer = keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08)
model.compile(loss='mse', optimizer=optimizer)
model.fit(x,y,nb_epoch=4500,batch_size=20,verbose=0,validation_split=0.1)

我想现在解决另一个问题,即比较给定查询的两个实体。模型的输入是(q,e1,e2),最终模型的输出应该是得分之间的差异。

我计划以下列方式进行: 取(q,e1)并通过上述神经网络(让我们称之为NN1)得到分数S1(比如说)并将(q,e2)传递给NN1的并行副本以得到分数S2 。 然后我想将这两个值组合起来,在输出中输出为S1-S2(这样我就可以使用MSE丢失函数了。)

Q1)我该怎么做?有人可以告诉我这样做的代码吗?

Q2)这对我来说是更重要的问题。我没有得分值作为基本事实。我只是有他们的分歧。是否有可能使用这种设置训练模型给出给定(q,e)对的分数(即,我有(q,e1,e2)对并且e1,e2' s得分之间的差异,是它可以创建一个以(q,e)对作为输入的模型,并将得分作为输出)?

0 个答案:

没有答案
相关问题