Keras准确度指标与手动计算不同

时间:2017-11-08 21:47:11

标签: machine-learning tensorflow keras

我正在研究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如何评估模型性能以及结果不同的原因。

详情请参阅下面的模型摘要。

enter image description here

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

0 个答案:

没有答案