【发布时间】:2016-07-05 09:51:09
【问题描述】:
我正在尝试在 Keras 中仅使用 1 个通道对图像 (29 x 29) 进行分类。如果中间像素在一定范围内,则输出为1,否则为0。
对于训练集,我有 10000 张输出为 1 的图像和 30000 张输出为 0 的图像,我使用以下架构:
model = Sequential()
# kernel = (4, 4); 6 outputmaps 26x26
model.add(Convolution2D(6, 4, 4, input_shape=(img_channels, img_rows, img_columns)))
model.add(Activation('relu'))
# 6 outputmaps of 13x13
model.add(MaxPooling2D(pool_size=(2, 2)))
# 12 outputmaps of 10x10 ; kernel = (4, 4)
model.add(Convolution2D(12, 4, 4))
model.add(Activation('relu'))
# 12 outputmaps of 5x5
model.add(MaxPooling2D(pool_size=(2, 2)))
# 24 outputmaps of 4x4 ; kernel = (2, 2)
model.add(Convolution2D(24, 2, 2))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
对于编译,我使用的是 binary_crossentropy 损失
model.compile(loss='binary_crossentropy', optimizer='sgd', class_mode='binary')
准确率会波动,但在每个 epoch 后会达到 0.75 的最终值。 有什么我想念的吗?为了使它起作用,我应该更改或添加什么吗?
【问题讨论】:
标签: neural-network classification conv-neural-network keras