我刚刚使用Keras构建了我的第一个模型,这是输出。它看起来像是在构建任何Keras人工神经网络后获得的标准输出。即使在查看文档之后,我也不完全了解时代是什么以及输出中打印的内容是什么。
Keras的时代和失落是什么?
(我知道这可能是一个非常基本的问题,但我似乎无法在网上找到答案,如果答案真的很难从文档中收集,我认为其他人会有同样的问题,因此决定在这里发布。)
Epoch 1/20
1213/1213 [==============================] - 0s - loss: 0.1760
Epoch 2/20
1213/1213 [==============================] - 0s - loss: 0.1840
Epoch 3/20
1213/1213 [==============================] - 0s - loss: 0.1816
Epoch 4/20
1213/1213 [==============================] - 0s - loss: 0.1915
Epoch 5/20
1213/1213 [==============================] - 0s - loss: 0.1928
Epoch 6/20
1213/1213 [==============================] - 0s - loss: 0.1964
Epoch 7/20
1213/1213 [==============================] - 0s - loss: 0.1948
Epoch 8/20
1213/1213 [==============================] - 0s - loss: 0.1971
Epoch 9/20
1213/1213 [==============================] - 0s - loss: 0.1899
Epoch 10/20
1213/1213 [==============================] - 0s - loss: 0.1957
Epoch 11/20
1213/1213 [==============================] - 0s - loss: 0.1923
Epoch 12/20
1213/1213 [==============================] - 0s - loss: 0.1910
Epoch 13/20
1213/1213 [==============================] - 0s - loss: 0.2104
Epoch 14/20
1213/1213 [==============================] - 0s - loss: 0.1976
Epoch 15/20
1213/1213 [==============================] - 0s - loss: 0.1979
Epoch 16/20
1213/1213 [==============================] - 0s - loss: 0.2036
Epoch 17/20
1213/1213 [==============================] - 0s - loss: 0.2019
Epoch 18/20
1213/1213 [==============================] - 0s - loss: 0.1978
Epoch 19/20
1213/1213 [==============================] - 0s - loss: 0.1954
Epoch 20/20
1213/1213 [==============================] - 0s - loss: 0.1949
答案 0 :(得分:34)
只是更具体地回答问题,这里是对时代和损失的定义:
纪元:对所有培训数据进行完整传递。
例如,在上面的视图中,您有1213个观察值。因此,当你完成对所有1213个观察的训练通过时,一个时代就结束了。
损失:我们在模型训练期间尝试最小化的标量值。损失越低,我们的预测越接近真实标签。
这通常是David Maust上面所说的平均误差(MSE),或者经常在Keras,Categorical Cross Entropy
您希望通过适合您的Keras模型看到的是,在n个时期内损失减少。您的训练运行相当不正常,因为您的损失实际上在增加。这个可能是由于学习率太大,导致你超出最佳状态。
正如jaycode所提到的,你会想看看你的模型在看不见的数据上的表现,因为这是机器学习的一般用例。
因此,您应该在编译方法中包含一个指标列表,它们可能如下所示:
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
除了在fit方法中运行验证模型,例如:
model.fit(data, labels, validation_split=0.2)
还有更多要解释的内容,但希望这可以让你开始。
答案 1 :(得分:10)
当您的模型通过网络中的所有节点运行数据并准备更新权重以达到最佳损失值时,一个时期结束。也就是说,越小越好。在你的情况下,由于在更高的时期有更高的损失分数,它“似乎”在第一个时代的模型更好。
我之所以说“似乎”,因为我们无法确切地说清楚,因为该模型尚未使用正确的交叉验证方法进行测试,即仅根据其训练数据进行评估。
改善模型的方法:
将sklearn的GridSearchCV与Keras相结合可以自动完成此过程。