我刚刚开始使用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 = 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
documentation表示适合返回
历史记录实例。其历史属性包含所有信息 在培训期间收集。
有谁知道如何解释历史实例?
例如,32/80是什么意思?我假设80是样本数但是32是多少? ETA:0s ??
答案 0 :(得分:6)
32
是您的批量大小。如果您愿意,可以在拟合函数中更改默认值。
在第一批训练结束后,Keras估计了一个时期的训练持续时间(ETA:预计到达时间),相当于所有样本的一轮训练。
除此之外,您还可以获得培训和验证样本的损失(预测和真实标签之间的差异)和您的指标(在您的情况下是准确性)。
答案 1 :(得分:6)
@petezurich已经说过,ETA =预计到达时间。
80
是您的培训集的大小,32/80
和64/80
表示您的批量大小是32,当前是第一批(或第二批)分别处理)。
loss
和acc
是指训练集的当前损失和准确性 。
在每个时期结束时,都会根据您的验证集对您训练有素的NN进行评估。这就是val_loss
和val_acc
所指的。
model.fit()
返回的历史记录对象是带有某些字段的简单类,例如对model
,对params
字典的引用,最重要的是对history
字典的引用。它在每个时期的末尾存储loss
和acc
(或任何其他使用的度量)的值。对于2个时期,它将看起来像这样:
{
'val_loss': [16.11809539794922, 14.12947562917035],
'val_acc': [0.0, 0.0],
'loss': [14.890108108520508, 12.088571548461914],
'acc': [0.0, 0.25]
}
如果您想visualize训练进度,这非常方便。
注意:如果您的验证损失/准确性开始增加而培训损失/准确性仍在减少,则表明过度拟合。
注意2:最后,您应该使用与训练集和验证集不同的测试集来测试您的NN,因此在训练过程中从未被触及过。