我正在训练一个 keras 模型,它的最后一层是一个sigmoid单元:
output = Dense(units=1, activation='sigmoid')
Run Code Online (Sandbox Code Playgroud)
我正在用一些训练数据训练这个模型,其中预期输出总是介于 0.0 和 1.0 之间的数字。我正在用均方误差编译模型:
model.compile(optimizer='adam', loss='mse')
Run Code Online (Sandbox Code Playgroud)
由于预期输出和实际输出都是介于 0 和 1 之间的单个浮点数,因此我也期望损失介于 0 和 1 之间,但是当我开始训练时,我得到了3.3932大于 1的损失。
我错过了什么吗?
编辑: 我正在添加一个示例来显示问题:https : //drive.google.com/file/d/1fBBrgW-HlBYhG-BUARjTXn3SpWqrHHPK/view?usp=sharing (我不能只粘贴代码,因为我需要附加训练数据)
运行后python stackoverflow.py,将显示模型的摘要,以及训练过程。我还在每一步打印 y_true 的最小值和最大值,以验证它们是否在 [0, 1] 范围内。无需等待训练完成,您会看到前几个 epoch 的损失远大于 1。