我使用的是通过Keras库实现的神经网络,下面是训练期间的结果。最后,它会打印测试分数和测试准确性。我无法弄清楚分数代表什么,但是我认为准确度是运行测试时正确的预测数。


时代1/15 1200/1200 [==============================-4秒-损失:
0.6815-acc:0.5550-val_loss:0.6120-val_acc:0.7525

时代2/15 1200/1200 [==============================]-3秒-损失:
0.5481-acc:0.7250-val_loss:0.4645-val_acc:0.8025

时代3/15 1200/1200 [==============================-3秒-损失:
0.5078-acc:0.7558-val_loss:0.4354-val_acc:0.7975

时代4/15 1200/1200 [==============================]-3秒-损失:
0.4603-acc:0.7875-val_loss:0.3978-val_acc:0.8350

时代5/15 1200/1200 [==============================-3秒-损失:
0.4367-acc:0.7992-val_loss:0.3809-val_acc:0.8300

时代6/15 1200/1200 [==============================]-3秒-损失:
0.4276-acc:0.8017-val_loss:0.3884-val_acc:0.8350

时代7/15 1200/1200 [==============================-3秒-损失:
0.3975-acc:0.8167-val_loss:0.3666-val_acc:0.8400

时代8/15 1200/1200 [==============================-3秒-损失:
0.3916-acc:0.8183-val_loss:0.3753-val_acc:0.8450

时代9/15 1200/1200 [==============================]-3秒-损失:
0.3814-acc:0.8233-val_loss:0.3505-val_acc:0.8475

时代10/15 1200/1200 [==============================]-3秒-损失:
0.3842-acc:0.8342-val_loss:0.3672-val_acc:0.8450

时代11/15 1200/1200 [==============================]-3秒-损失:
0.3674-acc:0.8375-val_loss:0.3383-val_acc:0.8525

时代12/15 1200/1200 [==============================]-3秒-损失:
0.3624-acc:0.8367-val_loss:0.3423-val_acc:0.8650

时代13/15 1200/1200 [==============================-3秒-损失:
0.3497-acc:0.8475-val_loss:0.3069-val_acc:0.8825

时代14/15 1200/1200 [==============================]-3秒-损失:
0.3406-acc:0.8500-val_loss:0.2993-val_acc:0.8775

时代15/15 1200/1200 [==============================]-3秒-损失:
0.3252-acc:0.8600-val_loss:0.2960-val_acc:0.8775

400/400 [=============================]-0s

测试成绩:0.299598811865

测试精度:0.88


看着Keras documentation,我仍然不明白什么是分数。对于评估函数,它说:


返回测试模式下模型的损失值和指标值。


我注意到的一件事是,当测试准确性较低时,分数会更高;而当准确性较高时,分数会更低。

最佳答案

供参考,代码的两个相关部分:

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

score, acc = model.evaluate(x_test, y_test,
                            batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)


分数是对给定输入的损失函数的评估。

训练网络正在寻找使损耗函数(或成本函数)最小化的参数。

这里的成本函数是binary_crossentropy

对于目标T和网络输出O,二进制互熵可以定义为

f(T,O)=-(T * log(O)+(1-T)* log(1-O))

因此,您看到的分数就是对此的评价。

如果您输入一批输入,则很可能会返回平均损失。

所以,是的,如果您的模型(在测试时)具有较低的损耗,则它通常应该具有较低的预测误差。

关于neural-network - 使用Keras评估模型时的测试成绩与测试准确性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43589842/

10-12 21:10