KERAS输出指标解释

  • 本文关键字:解释 输出 KERAS keras
  • 更新时间 :
  • 英文 :


我使用keras运行了示例代码。

model = Sequential([
BatchNormalization(axis=1, input_shape=(3,224,224))
Flatten(),
Dense(10, activation='softmax')])
model.compile(Adam(lr=1e-4), loss="categorical_crossentropy", metrics=['accuracy'])
model.fit_generator(batches, batches.nb_sample, nb_epoch=2, 
                   validation_data=test_batches, nb_val_samples=test_batches.nb_sample)

它给出了此输出:

None
Epoch 1/2
500/500 [==============================] - 147s - loss: 2.2464 - acc: 0.3520 - val_loss: 6.4765 - val_acc: 0.1100
Epoch 2/2
500/500 [==============================] - 140s - loss: 0.8074 - acc: 0.7880 - val_loss: 3.8807 - val_acc: 0.1450

我找不到loss, acc, val_loss, val_acc的含义。任何解释或链接与文档都会有所帮助。

这最接近我想要的东西。在上面的代码中,我正在适合模型。但这也给出了验证的准确性。从哪个数据集计算此验证精度?

损失是您最小化训练神经网络的目标函数。loss值是培训集中跨批处理损失函数的平均值。精度(acc)是跨批次的平均准确性,也是训练集的平均精度。精度只是模型正确分类的数据集中样本的比例。

但是,在完整验证集上计算了val指标,即您在参数validation_data上传递的数据集。这样做是为了检查培训期间的过度拟合。

  1. 关于您的第一个问题:我恭敬地建议您熟悉神经网络的基本机制,或者研究众多MOOC之一,即Fast.AI的这一出色的机制之一。这也超出了该论坛的范围,因为它似乎与编程有关。

  2. 您的验证精度是根据您通过在model.fit_generator()函数中设置validation_data参数提供的数据来计算的。在您的情况下,您将其设置为test_batches,这很可能有条不紊地不正确。您需要将数据分为三组:一组:一组用于培训,一个用于验证(以及看到您对看不见的数据的培训进度,并获取用于调整超参数的有用信息)和一个用于测试的数据集(评估评估模型的最终分数)。

另外一件事:nb_val_samples不再是fit_generator的参数。请参阅此处的文档。

最新更新