我在我的模型中使用Siamese架构来进行分类任务,看看两个输入是否相似。
in1 = Input(shape=(None,), dtype='int32', name='in1')
x1 = Embedding(output_dim=dim, input_dim=n_symbols, input_length=None,
weights=[embedding_weights], name='x1')(in1)
in2 = Input(shape=(None,), dtype='int32', name='in2')
x2 = Embedding(output_dim=dim, input_dim=n_symbols, input_length=None,
weights=[embedding_weights], name='x2')(in2)
l = Bidirectional(LSTM(units=100, return_sequences=False))
y1 = l(x1)
y2 = l(x2)
y = concatenate([y1, y2])
out = Dense(1, activation='sigmoid')(y)
model = Model(inputs=[in1, in2], outputs=[out])
它正常工作,即使我使用单个输入,要训练的权重数量保持不变。令我感到困惑的是模型的张量模板化。
不应该x1
和x2
映射到同一个双向节点吗?
此外,18和32张张器的含义是什么?