在经典神经网络中,我们有 (X,Y),其中神经网络的目标是在给定 X 的情况下预测 Y。在我的例子中,我有来自两个不同空间的嵌入。让我们称它们为 M 和 N 以及二进制标签Y 表示这些嵌入是否属于同一类。现在问题变成了 ((M,N), Y),其中 Y 的值为 1(相同)或 0(不同)。如何构建神经网络来处理此类数据。一种简单的方法是将 M 和 N 连接起来,然后预测 Y,但由于 M 和 N 来自不同的嵌入空间,因此性能较差。
input_Dim = M.shape(0) + N.shape(0)
model = Sequential()
model.add(Dense(256, activation='relu', input_shape=(input_Dim,)))
model.add(Dense(128, activation='relu'))
model.add(Dense(1))
我想知道是否可以构造两个不同的神经网络,一个接受输入 M,另一个接受输入 N,然后组合这两个神经网络的输出来预测 Y 或不预测。这是处理此类问题的方法还是还有其他方法?可以使用keras或者tensorflow来完成吗?如果是,怎么办?
最佳答案
简单的 Keras 功能 API 模型:
input1 = Input(shape_of_embed_1)
input2 = Input(shape_of_embed_2)
#build net 1 from input 1
out1 = SomeLayer(...)(input1)
out1 = SomeOtherLayer(...)(out1)
#build net 2 from input 2
out2 = SomeLayer(...)(input2)
out2 = SomeOtherLayer(...)(out2)
#Concatenate
out = Concatenate()([out1,out2])
#Continue model
out = SomeLayer(...)(out)
out = SomeOtherLayer(...)(out)
#Finish
model = Model([input1, input2], out)
#Train
model.compile(optimizer=..., loss=...)
model.fit([embeddings1, embeddings2], y, ...)
关于python - 如何构建简单的神经网络来判断来自不同空间的两个嵌入是否属于同一类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57242894/