用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}$答案中也有一些类似的问题,但大多建议降低学习率,但一点帮助都没有。在
UPD:网络中几乎所有的权重和偏差都变成了nan
。不知怎么在网络里死了
这种情况下的解决方案:
我把最后一层的
sigmoid
函数改成了softmax
函数,然后就没有了为什么会这样?在
sigmoid
激活函数用于二进制(两类)分类。 在多分类问题中,我们应该使用softmax
函数——多分类问题sigmoid
函数的特殊扩展。在更多信息:Sigmoid vs Softmax
特别感谢@desternaut和@Shubham Panchal的错误指示
相关问题 更多 >
编程相关推荐