训练卷积神经网络时精度突然下降50%

2024-05-01 15:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

用Keras和Tensorflow在我自己的数据集上从头开始训练卷积神经网络。在

learning rate = 0.0001, 5个类进行排序, 没有退学, 数据集检查两次,未发现错误标签

型号:

model = models.Sequential()
model.add(layers.Conv2D(16,(2,2),activation='relu',input_shape=(75,75,3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(16,(2,2),activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(32,(2,2),activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Flatten())
model.add(layers.Dense(128,activation='relu'))
model.add(layers.Dense(5,activation='sigmoid'))

model.compile(optimizer=optimizers.adam(lr=0.0001),
             loss='categorical_crossentropy',
             metrics=['acc'])

history = model.fit_generator(train_generator,
                              steps_per_epoch=100,
                              epochs=50,
                              validation_data=val_generator,
                              validation_steps=25)

每当模型达到25-35个周期(80-90%的准确度)时,就会发生这种情况:

^{pr2}$

答案中也有一些类似的问题,但大多建议降低学习率,但一点帮助都没有。在

Accuracy Drop

UPD:网络中几乎所有的权重和偏差都变成了nan。不知怎么在网络里死了


Tags: 数据网络addmodellayerstensorflowstepsgenerator
1条回答
网友
1楼 · 发布于 2024-05-01 15:38:51

这种情况下的解决方案:

我把最后一层的sigmoid函数改成了softmax函数,然后就没有了

为什么会这样?在

sigmoid激活函数用于二进制(两类)分类。 在多分类问题中,我们应该使用softmax函数——多分类问题sigmoid函数的特殊扩展。在

更多信息:Sigmoid vs Softmax

特别感谢@desternaut和@Shubham Panchal的错误指示

相关问题 更多 >