【问题标题】:Loss not decrasing and is very high keras损失没有减少并且非常高 keras
【发布时间】:2019-12-04 02:47:26
【问题描述】:

我正在学习 keras 中的深度学习,但遇到了问题。 损失没有减少,而且很高,大约650。

我正在处理来自tensorflow.keras.datasets.mnist 的 MNIST 数据集 没有错误,只是我的神经网络没有学习。

这是我的模型:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
import tensorflow.nn as tfnn

inputdim = 28 * 28

model = Sequential()

model.add(Flatten())
model.add(Dense(inputdim, activation = tfnn.relu))
model.add(Dense(128, activation = tfnn.relu))
model.add(Dense(10, activation = tfnn.softmax))

model.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.fit(X_train, Y_train, epochs = 4)

和我的输出:

Epoch 1/4
60000/60000 [==============================] - 32s 527us/sample - loss: 646.0926 - acc: 6.6667e-05
Epoch 2/4
60000/60000 [==============================] - 39s 652us/sample - loss: 646.1003 - acc: 0.0000e+00 - l - ETA: 0s - loss: 646.0983 - acc: 0.0000e
Epoch 3/4
60000/60000 [==============================] - 35s 590us/sample - loss: 646.1003 - acc: 0.0000e+00
Epoch 4/4
60000/60000 [==============================] - 33s 544us/sample - loss: 646.1003 - acc: 0.0000e+00
```

【问题讨论】:

  • 您可以尝试更改优化器并为您的火车添加更多时期。用它做一些测试。尝试在您的 NN 中使用 Sigmoid 激活。
  • 不确定数据集,您是否对图像进行标准化?而且loss这么大,试着设置batch size吧。
  • 您可能尚未对图像进行标准化。如果是这种情况,请参阅 this answerthis one

标签: python machine-learning keras neural-network deep-learning


【解决方案1】:

好的,我在行之间添加了BatchNormalization,并将损失函数更改为'sparse_categorical_crossentropy'。这就是我的神经网络的样子:

model = Sequential()

model.add(Flatten())
model.add(BatchNormalization(axis = 1, momentum = 0.99))
model.add(Dense(inputdim, activation = tfnn.relu))
model.add(BatchNormalization(axis = 1, momentum = 0.99))
model.add(Dense(128, activation = tfnn.relu))
model.add(BatchNormalization(axis = 1, momentum = 0.99))
model.add(Dense(10, activation = tfnn.softmax))

model.compile(loss = 'sparse_categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])

这就是结果:

Epoch 1/4
60000/60000 [==============================] - 68s 1ms/sample - loss: 0.2045 - acc: 0.9374
Epoch 2/4
60000/60000 [==============================] - 55s 916us/sample - loss: 0.1007 - acc: 0.9689

感谢您的帮助!

【讨论】:

【解决方案2】:

您可以尝试 sparse_categorical_crossentropy 损失函数。另外你的批量是多少?正如已经建议的那样,您可能希望增加 epoch 的数量。

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2018-02-09
    • 2019-08-18
    • 2023-03-13
    相关资源
    最近更新 更多