gpt4 book ai didi

tensorflow - Keras 分类交叉熵学习因将所有内容归为一类而陷入困境

转载 作者:行者123 更新时间:2023-11-30 09:39:24 25 4
gpt4 key购买 nike

我正在关注 tensorflow tutorial on classification但遇到了一个问题,即我的训练网络在将所有图片归入一个类别的次优解决方案中,学习停滞不前。我的第一个想法是,这是由于类别中训练图片分布不平衡( as also suggested here ),所以我删除了足够的训练图片,以便每个类别中保留相同数量的图片。然而问题并没有改变。接下来,我尝试了模型的不同损失函数、不同指标、不同优化器和不同层结构,但没有任何改进。我的模型在训练后仍然将所有图片归为一类。任何想法都非常受欢迎。

这是我尝试过的模型之一:

        model = keras.Sequential([
keras.layers.Flatten(input_shape=(PicHeight, PicWidth, 3)),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(32, activation='relu'),
keras.layers.Dense(32, activation='relu'),
keras.layers.Dense(8, activation='relu'),
keras.layers.Dense(number_of_categories, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

这就是训练

Train on 101 samples
Epoch 1/16
101/101 [==============================] - 1s 11ms/sample - loss: 55.8119 - accuracy: 0.1584
Epoch 2/16
101/101 [==============================] - 1s 6ms/sample - loss: 232.9768 - accuracy: 0.1485
Epoch 3/16
101/101 [==============================] - 1s 6ms/sample - loss: 111.9690 - accuracy: 0.1584
Epoch 4/16
101/101 [==============================] - 1s 6ms/sample - loss: 72.1569 - accuracy: 0.1782
Epoch 5/16
101/101 [==============================] - 1s 6ms/sample - loss: 39.3051 - accuracy: 0.1386
Epoch 6/16
101/101 [==============================] - 1s 6ms/sample - loss: 2.6347 - accuracy: 0.0990
Epoch 7/16
101/101 [==============================] - 1s 6ms/sample - loss: 2.3318 - accuracy: 0.1683
Epoch 8/16
101/101 [==============================] - 1s 6ms/sample - loss: 2.5922 - accuracy: 0.2277
Epoch 9/16
101/101 [==============================] - 1s 6ms/sample - loss: 2.0848 - accuracy: 0.1485
Epoch 10/16
101/101 [==============================] - 1s 6ms/sample - loss: 1.9453 - accuracy: 0.1386
Epoch 11/16
101/101 [==============================] - 1s 6ms/sample - loss: 1.9453 - accuracy: 0.1386
Epoch 12/16
101/101 [==============================] - 1s 6ms/sample - loss: 1.9453 - accuracy: 0.1386
Epoch 13/16
101/101 [==============================] - 1s 6ms/sample - loss: 1.9452 - accuracy: 0.1386
Epoch 14/16
101/101 [==============================] - 1s 6ms/sample - loss: 1.9452 - accuracy: 0.1485
Epoch 15/16
101/101 [==============================] - 1s 6ms/sample - loss: 1.9452 - accuracy: 0.1485
Epoch 16/16
101/101 [==============================] - 1s 7ms/sample - loss: 1.9451 - accuracy: 0.1485
25/25 - 0s - loss: 1.9494 - accuracy: 0.1200

训练数据有 7 个类别,每个类别 18 张图片。

最佳答案

  1. 不要使用太多 FC 层。他们不太擅长处理图片。
  2. 您的数据集大小对于深度学习来说显然太小。添加更多训练数据或尝试传统机器学习,如 SVM、LR。

不平衡的训练数据不会对模型性能产生影响。这实际上取决于您的数据的不平衡程度。如果低于15%就还好。你绝对可以通过加权损失、过度平衡、预处理来制作更多图像等来改进。

如果你有足够的训练数据并且图片尺寸大于20*20,你应该尝试CNN。

关于tensorflow - Keras 分类交叉熵学习因将所有内容归为一类而陷入困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59778031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com