我是机器学习领域的新手。所以这个问题可能听起来很傻。我们通常在输出层使用进行二元分类。在我的实验中,我发现如果将输出层中的替换为会提供更高的准确度和更低的二进制交叉熵损失。有人可以解释可能的原因吗?我使用标签作为和。
代码如下所示。我在后端使用 Keras 和 TensorFlow。
input_shape = (200, )
left_input = Input(input_shape)
right_input = Input(input_shape)
model = Sequential()
model.add(Dense(200,input_dim=200,kernel_initializer='glorot_uniform',bias_initializer='zeros'))
model.add(Activation('tanh'))
model.add(Dropout(0.1))
model.add(Dense(200,input_dim=200,kernel_initializer='glorot_uniform',bias_initializer='zeros'))
model.add(Activation('tanh'))
model.add(Dropout(0.1))
x1 = model(left_input)
x2 = model(right_input)
dotted = Dot(axes=1,normalize=True)([x1, x2])
out = Dense(1,activation='sigmoid',kernel_initializer='glorot_uniform',bias_initializer='zeros')(dotted)
siamese = Model(inputs=[left_input, right_input], outputs=out)
siamese.compile(loss='binary_crossentropy', optimizer='Adagrad', metrics=['accuracy'])