【发布时间】:2017-05-10 16:52:53
【问题描述】:
我正在学习如何使用 Keras 创建卷积神经网络。我正在尝试获得 MNIST 数据集的高精度。
显然categorical_crossentropy 用于 2 个以上的课程,binary_crossentropy 用于 2 个课程。由于有 10 位数字,我应该使用categorical_crossentropy。然而,在训练和测试了数十个模型之后,binary_crossentropy 的性能始终明显优于categorical_crossentropy。
在 Kaggle 上,我使用 binary_crossentropy 和 10 个 epoch 获得了 99+% 的准确率。同时,使用categorical_crossentropy,即使使用 30 个 epoch,我也无法达到 97% 以上(虽然不多,但我没有 GPU,所以训练需要很长时间)。
这是我的模型现在的样子:
model = Sequential()
model.add(Convolution2D(100, 5, 5, border_mode='valid', input_shape=(28, 28, 1), init='glorot_uniform', activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(100, 3, 3, init='glorot_uniform', activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.3))
model.add(Flatten())
model.add(Dense(100, init='glorot_uniform', activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(100, init='glorot_uniform', activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(10, init='glorot_uniform', activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adamax', metrics=['accuracy'])
【问题讨论】:
标签: machine-learning keras neural-network deep-learning conv-neural-network