Keras输出指标解释

时间:2017-09-27 05:48:13

标签: 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的含义。对文档的任何解释或链接都会有所帮助。

This is最接近我正在寻找的东西。在上面的代码中,我适合模型。但它也提供了验证准确性。从哪个数据集计算验证准确度?

2 个答案:

答案 0 :(得分:2)

损失是您最小化训练神经网络的目标函数。 loss值是训练集中各批次的损失函数的平均值。准确度(acc)是批次之间的平均准确度,也是训练集的平均准确度。准确度只是模型正确分类的数据集中样本的一小部分。

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

答案 1 :(得分:0)

  1. 关于您的第一个问题:我谨建议您熟悉basic mechanics of a neural network或查看众多MOOC之一,即this excellent one from fast.ai。这也超出了本论坛的范围,因为它似乎与编程无关。

  2. 您的验证准确度是根据您在validation_data函数中设置model.fit_generator()参数时提供的数据计算得出的。在您的情况下,您已将其设置为test_batches,这在某种程度上可能不正确。您需要将数据拆分为三组:一组用于培训,一组用于验证(以及通过查看培训中有关看不见的数据和获取用于调整超参数的有用信息)和一组用于测试的数据集(用于评估)你的模特的最终得分。)

  3. 还有一件事:nb_val_samples不再是fit_generator的参数。请参阅documentation here