当前位置:  开发笔记 > 编程语言 > 正文

标准的Keras模型输出意味着什么?什么是Keras的时代和损失?

如何解决《标准的Keras模型输出意味着什么?什么是Keras的时代和损失?》经验,为你挑选了2个好方法。

我刚刚使用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

Lucas Ramada.. 37

只是更具体地回答问题,这里是时代和损失的定义:

时代:完整传递所有训练数据.

例如,在上面的视图中,您有1213个观察值.因此,当你完成对所有1213个观察的训练通过时,一个时代就结束了.

损失:我们在模型训练期间尝试最小化的标量值.损失越低,我们的预测越接近真实标签.

这通常是像David Maust上面所说的平均误差(MSE),或者经常在Keras,分类交叉熵


你期望从你的Keras模型运行中看到的是,在n个时期内损失减少.您的训练运行相当不正常,因为您的损失实际上在增加.这可能是由于学习率太大,导致您超出最佳状态.

正如jaycode所提到的,你会想要看看你的模型在看不见的数据上的表现,因为这是机器学习的一般用例.

因此,您应该在compile方法中包含一个度量列表,它们可能如下所示:

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

除了在fit方法中运行验证模型,例如:

model.fit(data, labels, validation_split=0.2)

还有更多要解释的内容,但希望这能让你开始.



1> Lucas Ramada..:

只是更具体地回答问题,这里是时代和损失的定义:

时代:完整传递所有训练数据.

例如,在上面的视图中,您有1213个观察值.因此,当你完成对所有1213个观察的训练通过时,一个时代就结束了.

损失:我们在模型训练期间尝试最小化的标量值.损失越低,我们的预测越接近真实标签.

这通常是像David Maust上面所说的平均误差(MSE),或者经常在Keras,分类交叉熵


你期望从你的Keras模型运行中看到的是,在n个时期内损失减少.您的训练运行相当不正常,因为您的损失实际上在增加.这可能是由于学习率太大,导致您超出最佳状态.

正如jaycode所提到的,你会想要看看你的模型在看不见的数据上的表现,因为这是机器学习的一般用例.

因此,您应该在compile方法中包含一个度量列表,它们可能如下所示:

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

除了在fit方法中运行验证模型,例如:

model.fit(data, labels, validation_split=0.2)

还有更多要解释的内容,但希望这能让你开始.



2> jaycode..:

当您的模型通过网络中的所有节点运行数据并准备更新权重以达到最佳损失值时,一个时期结束.也就是说,越小越好.在你的情况下,由于在更高的时期有更高的损失分数,它"似乎"在第一个时代的模型更好.

我说"似乎",因为我们实际上无法确定,因为该模型尚未使用适当的交叉验证方法进行测试,即仅根据其训练数据进行评估.

改善模型的方法:

在Keras模型中使用交叉验证以了解模型的实际执行情况,在预测以前从未见过的新数据时,它是否能够很好地概括?

调整您的学习速率,神经网络模型的结构,隐藏单元/层的数量,初始化,优化器和激活器参数在您的模型中使用的无数其他东西.

将sklearn的GridSearchCV与Keras结合使用可以实现此过程的自动化.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有