我正在使用keras来实现一个简单的二进制分类网络。我有一个包含2个类别的数据集,我正在尝试使用这些数据来训练我的网络。我没有庞大的数据集。在这两个类别的图像总数是500左右简单的CNN的不平衡训练和测试准确性
网络是如下:
self.model = Sequential()
self.model.add(Conv2D(128, (2, 2), padding='same', input_shape=dataset.X_train.shape[1:]))
self.model.add(Activation('relu'))
self.model.add(MaxPooling2D(pool_size=(2, 2)))
self.model.add(Dropout(0.25))
self.model.add(Conv2D(64, (2, 2), padding='same'))
self.model.add(Activation('relu'))
self.model.add(MaxPooling2D(pool_size=(2, 2)))
self.model.add(Dropout(0.25))
SGD配置:
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
我使用binary_crossentropy
我只是想知道为什么图中有很多大的峰值,以及我能做些什么来优化它。
我是新手,因此任何意见和建议将不胜感激。
谢谢!
这就是为什么它被称为**随机**渐变下降。通过在每次迭代中使用小批量而不是整个数据集,梯度只是真实梯度的噪声估计。因此,错误图的行为有点像随机游走。只要没有重大的数值不稳定性,就不需要对其进行优化。 – Kh40tiK