2017-09-27 116 views
0

我使用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

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

但是val度量标准是在完整的验证集上计算的,它是您在参数validation_data上传递的数据集。这是为了在训练过程中检查过度配合。

+0

谢谢。这有助于。 – Netro

0
  1. 关于你提到的第一个问题:我谨建议你熟悉的basic mechanics of a neural network或可考虑许多MOOCs即this excellent one from fast.ai之一。这也超出了这个论坛的范围,因为它不像编程。

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

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

+0

谢谢,我跟随fast.ai :)我从https://github.com/fastai/courses/blob/master/deeplearning1/nbs/statefarm-sample.ipynb采取代码。我使用keras 1.2.2。它有nb_val_samples https://faroit.github.io/keras-docs/1.2.2/models/sequential/#fit_generator – Netro