我刚刚使用Keras构建了我的第一个模型,这是它的输出。看起来像是构建任何Keras人工神经网络后的标准输出。即使查看了文档,我仍然不太理解epoch和loss在输出中代表什么意思。
Keras中的epoch和loss是什么?
(我知道这可能是一个非常基础的问题,但我似乎在网上找不到答案,如果答案真的很难从文档中理解,我想其他人也会有同样的疑问,因此我决定在这里发布这个问题。)
Epoch 1/201213/1213 [==============================] - 0s - loss: 0.1760 Epoch 2/201213/1213 [==============================] - 0s - loss: 0.1840 Epoch 3/201213/1213 [==============================] - 0s - loss: 0.1816 Epoch 4/201213/1213 [==============================] - 0s - loss: 0.1915 Epoch 5/201213/1213 [==============================] - 0s - loss: 0.1928 Epoch 6/201213/1213 [==============================] - 0s - loss: 0.1964 Epoch 7/201213/1213 [==============================] - 0s - loss: 0.1948 Epoch 8/201213/1213 [==============================] - 0s - loss: 0.1971 Epoch 9/201213/1213 [==============================] - 0s - loss: 0.1899 Epoch 10/201213/1213 [==============================] - 0s - loss: 0.1957 Epoch 11/201213/1213 [==============================] - 0s - loss: 0.1923 Epoch 12/201213/1213 [==============================] - 0s - loss: 0.1910 Epoch 13/201213/1213 [==============================] - 0s - loss: 0.2104 Epoch 14/201213/1213 [==============================] - 0s - loss: 0.1976 Epoch 15/201213/1213 [==============================] - 0s - loss: 0.1979 Epoch 16/201213/1213 [==============================] - 0s - loss: 0.2036 Epoch 17/201213/1213 [==============================] - 0s - loss: 0.2019 Epoch 18/201213/1213 [==============================] - 0s - loss: 0.1978 Epoch 19/201213/1213 [==============================] - 0s - loss: 0.1954 Epoch 20/201213/1213 [==============================] - 0s - loss: 0.1949
回答:
为了更具体地回答这些问题,这里是epoch和loss的定义:
Epoch:对所有训练数据的一次完整遍历。
例如,在你上面看到的视图中,你有1213个观测值。因此,当完成对所有1213个观测值的训练遍历时,一个epoch就结束了。
Loss:我们在训练模型时试图最小化的标量值。loss值越低,我们的预测就越接近真实标签。
这通常是均方误差(MSE),正如上面[隐藏人名]所说,或者在Keras中,通常是分类交叉熵
在运行Keras模型的fit方法时,你期望看到的是loss在n个epoch中逐渐减少。你的训练运行相当异常,因为你的loss实际上在增加。这可能是由于学习率过大,导致你超过了最优点。
正如[隐藏人名]提到的,你需要查看模型在未见数据上的表现,因为这是机器学习的一般用例。
因此,你应该在compile方法中包含一个度量列表,可能会像这样:
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
以及在fit方法中对验证数据运行模型,例如:
model.fit(data, labels, validation_split=0.2)
还有很多需要解释的,但希望这能帮助你开始。