2017-09-14 443 views
2

我刚开始使用Keras。我工作的样品有模型和下面的代码片段是用来运行模型如何解读Keras model.fit输出?

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?

回答

1

32是你的批量大小。如果您希望这样做,32是默认值,您可以在适合的功能中进行更改。

在第一批培训结束后,Keras会估计一个时期的培训时间(ETA:预计到达时间),相当于您所有样本的一轮培训。

除此之外,您还可以获得培训和验证样本的损失(预测和真实标签之间的差异)和您的度量(在您的情况下为准确度)。

+0

你有什么acc:0.4062 80/80的意思呢? acc =准确性? 80/80 80正确的80?这不意味着acc = 1.0?是否有任何地方的输出含义的参考链接? – SeanJ

+0

'80/80'意思是“来自总共80个样本的80个样本”已经被训练。因此,您看到的第一个条目是“32/80”,它表示:“总共80个样本中的32个”。反过来,准确度是根据您网络此时预测的值与您以标签形式提供的实际值计算得出的。 – petezurich

+0

关于输出含义的问题是一个更广泛的问题,我恭敬地建议您查看许多教授基础知识的课程之一,即[this this](http://course.fast.ai/)来自杰里米霍华德,这是非常方便。 – petezurich