我正在研究Keras的二进制分类问题。我使用的损失函数是git-subtree
,指标是binary_crossentropy
。由于两个类是不平衡的,因此当我将训练数据集适合模型时,我使用metrics=['accuracy']
。
要查看效果,请按
打印出准确性 class_weight='auto'
输出为print GNN.model.test_on_batch([test_sample_1, test_sample_2], test_label)[1]
。但是当我使用以下行来获得预测精度时,这个结果是不同的
0.973
是predict_label = GNN.model.predict([test_sample_1, test_sample_2])
rounded = predict_label.round(1)
print (rounded == test_label).sum()/float(rounded.shape[0])
。
所以我想知道0.953
如何评估模型性能以及结果不同的原因。
详情请参阅下面的模型摘要。
metrics=['accuracy']
我按照
训练模型input_size = self.n_feature
encoder_size = 2000
dropout_rate = 0.5
X1 = Input(shape=(input_size, ), name='input_1')
X2 = Input(shape=(input_size, ), name='input_2')
encoder = Sequential()
encoder.add(Dropout(dropout_rate, input_shape=(input_size, )))
encoder.add(Dense(encoder_size, activation='tanh'))
encoded_1 = encoder(X1)
encoded_2 = encoder(X2)
merged = concatenate([encoded_1, encoded_2])
comparer = Sequential()
comparer.add(Dropout(dropout_rate, input_shape=(encoder_size * 2, )))
comparer.add(Dense(500, activation='relu'))
comparer.add(Dropout(dropout_rate))
comparer.add(Dense(200, activation='relu'))
comparer.add(Dropout(dropout_rate))
comparer.add(Dense(1, activation='sigmoid'))
Y = comparer(merged)
model = Model(inputs=[X1, X2], outputs=Y)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
self.model = model