gpt4 book ai didi

python - 使用 Keras 的卷积神经网络中总是相同的二进制类预测的原因和可能的解决方案是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:23 24 4
gpt4 key购买 nike

我正在尝试解决签名识别问题。我使用 GPDS 数据库,我合并了所有正版和伪造签名的组合,从而产生了 400 万个 200x200 像素图像的输入。

我使用 Keras 创建了一个基本的 CNN,由于我的硬件限制,我只使用了大约 5000 个输入和最多 10 个 epoch 进行训练。我的问题是,当我开始训练模型(model.fit 命令)时,我的准确度在 50% 左右变化,这是我的数据集的平衡,当纪元结束时,准确度正好是 50%。当我尝试在训练后预测一些结果时,预测都是相同的(例如,所有 1 表示真正的签名)。

不确定是否是以下方面的问题:

  • 局部最小值
  • 针对问题复杂性的小型数据集
  • 权重、学习率、动量的初始化值错误......
  • 培训不足
  • 网络对于这个问题来说非常简单

我是神经网络方面的新手,所以这可能只是一个基本问题,无论如何,有人可以帮助我吗??

代码如下:

model = Sequential()
model.add(Conv2D(100, (5, 5), input_shape=(1, 200, 200), activation='relu', data_format='channels_first'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=’adam’, metrics=['accuracy'])
model.fit(x = x, y = y, batch_size = 100, shuffle = True, epochs=10)

最佳答案

你在 sigmoid 之前使用了 relu activation (max(0,x)),我猜你正在饱和(取决于你的层是如何初始化的)乙状结肠。

Sigmoid and it's derivative

使 sigmoid 饱和会导致零梯度,因此无法学习。

关于python - 使用 Keras 的卷积神经网络中总是相同的二进制类预测的原因和可能的解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44315559/

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