python - 如何构建简单的神经网络来判断来自不同空间的两个嵌入是否属于同一类

标签 python python-3.x tensorflow keras neural-network

在经典神经网络中,我们有 (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/

相关文章:

python - 类型错误: 'WordListCorpusReader' object has no attribute '__getitem__' while using nltk.分类.apply_features

即使阻止关闭,Python Lirc 也会阻止代码

python - 如何从列表中创建目录并在 python 中包含子目录列表?

java - 使用 Jython 在 Java 中运行 Python 程序

python - 为什么从类和实例中获取属性的查找过程不同?

node.js - NodeJS 和 Python 之间的 RSA 签名不匹配

python - 在 python3 中相对寻找 io.StringIO

tensorflow - 如何在 google colab 中解压缩文件夹?

python - 方法 `serving_input_fn` 的参数 `export_savedmodel` 是什么?

python - tf.concat 张量上的 tf.assign,删除张量的可变字符?