如何解释Keras model.fit输出?
我刚开始使用Keras。我正在处理的示例有一个模型,下面的代码段用于运行该模型如何解释Keras model.fit输出?,keras,Keras,我刚开始使用Keras。我正在处理的示例有一个模型,下面的代码段用于运行该模型 from sklearn.preprocessing import LabelBinarizer label_binarizer = LabelBinarizer() y_one_hot = label_binarizer.fit_transform(y_train) model.compile('adam', 'categorical_crossentropy', ['accuracy']) history =
from sklearn.preprocessing import LabelBinarizer
label_binarizer = LabelBinarizer()
y_one_hot = label_binarizer.fit_transform(y_train)
model.compile('adam', 'categorical_crossentropy', ['accuracy'])
history = model.fit(X_normalized, y_one_hot, nb_epoch=3, validation_split=0.2)
我得到以下回应:
Using TensorFlow backend. Train on 80 samples, validate on 20 samples Epoch 1/3
32/80 [===========>..................] - ETA: 0s - loss: 1.5831 - acc:
0.4062 80/80 [==============================] - 0s - loss: 1.3927 - acc:
0.4500 - val_loss: 0.7802 - val_acc: 0.8500 Epoch 2/3
32/80 [===========>..................] - ETA: 0s - loss: 0.9300 - acc:
0.7500 80/80 [==============================] - 0s - loss: 0.8490 - acc:
0.8000 - val_loss: 0.5772 - val_acc: 0.8500 Epoch 3/3
32/80 [===========>..................] - ETA: 0s - loss: 0.6397 - acc:
0.8750 64/80 [=======================>......] - ETA: 0s - loss: 0.6867 - acc:
0.7969 80/80 [==============================] - 0s - loss: 0.6638 - acc:
0.8000 - val_loss: 0.4294 - val_acc: 0.8500
报告说,健康回归
历史实例。其历史记录属性包含所有信息
在训练期间收集
有人知道如何解释历史实例吗
例如,32/80意味着什么?我假设80是样本数,但32是多少?ETA:0s???
32
是您的批量大小。32是默认值,如果愿意,可以在拟合函数中更改
第一批培训完成后,Keras估计一个历元的培训持续时间(ETA:预计到达时间),这相当于对所有样本进行一轮培训
除此之外,您还可以获得培训样本和验证样本的损失(预测和真实标签之间的差异)和度量(在您的情况下是准确度)。ETA=预计到达时间
80
是您的培训集的大小,32/80
和64/80
表示您的批量大小为32,当前正在处理第一批(或分别是第二批)
loss
和acc
指的是训练集的当前损耗和精确度。
在每个历元结束时,将根据验证集对经过训练的NN进行评估。这是val\u loss
和val\u acc
所指的内容
model.fit()
返回的历史对象是一个简单的类,包含一些字段,例如对model
的引用、params
dict,以及最重要的history
dict。它在每个历元结束时存储loss
和acc
(或任何其他使用的度量)的值。对于两个时代,它将如下所示:
{
'val_loss': [16.11809539794922, 14.12947562917035],
'val_acc': [0.0, 0.0],
'loss': [14.890108108520508, 12.088571548461914],
'acc': [0.0, 0.25]
}
如果你想提高你的训练进度,这是非常有用的
注意:如果您的验证损失/准确度开始增加,而您的培训损失/准确度仍在下降,则这是过度拟合的指标
注2:最后,您应该针对一些与您的培训集和验证集不同的测试集对NN进行测试,因此在培训过程中从未接触过这些测试集。您知道acc:0.4062 80/80的含义吗?acc=准确度?80/80 80 80正确吗?这不是意味着acc=1.0吗?是否存在指向输出含义的参考链接?
80/80
表示“总共80个样本中的80个样本”已经过培训。因此,您看到的第一个条目是32/80
,上面写着:“总共80个样本中的32个”。准确度反过来是根据你的人际网络在此时预测的值与你以标签形式提供的实际值进行计算的。你关于输出含义的问题是一个更广泛的问题,我恭敬地建议你研究教授基础知识的众多课程之一,也就是杰里米·霍华德写的,很容易理解。@petezurick谢谢!然而,我不是在寻找准确度等的含义,而是寻找缩写词的含义(来自Tensorflow背景)。我原以为会有一页解释什么是历史输出。谢谢你的链接!答案是好的,但不完整。无参考和val_丢失:未描述val_acc…问题:当处理批时,丢失
继续更新。现在,告诉我损失是在整个数据集上评估的
,还是仅在批上评估的
。TIA.@chandresh据我所知,这是一个平均损失,即整个数据集的损失一直在进行。