我刚刚开始使用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)
Run Code Online (Sandbox Code Playgroud)
我收到以下回复:
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
Run Code Online (Sandbox Code Playgroud)
该文件说,适合的回报
历史实例.其历史属性包含培训期间收集的所有信息.
有谁知道如何解释历史实例?
例如,32/80是什么意思?我假设80是样本数但是32是多少?ETA:0s ??
正如@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]
}
Run Code Online (Sandbox Code Playgroud)
如果您想要了解您的培训进度,这非常方便.
注意:如果您的验证损失/准确度开始增加而您的训练损失/准确性仍在下降,则表明过度拟合.
注2:在最后,您应该针对某些与训练集和验证集不同的测试集测试您的NN ,因此在训练过程中从未接触过.
32是你的批量大小.如果您愿意,可以在拟合函数中更改默认值32.
在第一批训练后,Keras估计一个时期的训练持续时间(ETA:估计到达时间),这相当于所有样本的一轮训练.
除此之外,您还可以获得培训和验证样本的损失(预测和真实标签之间的差异)和您的指标(在您的情况下是准确性).
| 归档时间: |
|
| 查看次数: |
10238 次 |
| 最近记录: |