【发布时间】:2017-11-22 14:05:25
【问题描述】:
我研究 CNN 已经有一段时间了,但还不是很了解。所以我插入了我认为重要的内容。
我有一个手势数据集,其中包含 10 个类别的 1400 张图像。我正在 spyder IDE 中的 keras 中构建 CNN 模型。顺序如下。
model = Sequential()
model.add(Convolution2D(32, 3,3,border_mode='same', input_shape=input_shape))
model.add(Activation('relu'))
model.add(Convolution2D(32, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Convolution2D(64, 3, 3))
model.add(Activation('relu'))
model.add(Convolution2D(64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Convolution2D(64, 3, 3))
model.add(Activation('relu'))
model.add(Convolution2D(64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop',metrics=["accuracy"])
我用 30 个 epoch 训练它并获得:
Test Loss: 0.260991449015
Test accuracy: 0.928571430274
precision recall f1-score support
class 0 1.00 0.93 0.96 28
class 1 0.96 0.96 0.96 26
class 2 0.92 1.00 0.96 24
class 3 0.72 0.87 0.79 30
class 4 0.97 0.97 0.97 35
class 5 0.90 0.93 0.92 29
class 6 0.93 1.00 0.97 28
class 7 1.00 0.97 0.98 33
class 8 1.00 0.95 0.97 19
class 9 0.95 0.71 0.82 28
avg / total 0.93 0.93 0.93 280
Confusion matrix, without normalization
[[26 0 0 0 1 0 1 0 0 0]
[ 0 25 1 0 0 0 0 0 0 0]
[ 0 0 24 0 0 0 0 0 0 0]
[ 0 0 1 26 0 3 0 0 0 0]
[ 0 1 0 0 34 0 0 0 0 0]
[ 0 0 0 1 0 27 1 0 0 0]
[ 0 0 0 0 0 0 28 0 0 0]
[ 0 0 0 0 0 0 0 32 0 1]
[ 0 0 0 1 0 0 0 0 18 0]
[ 0 0 0 8 0 0 0 0 0 20]]
Q1:这个模型做得好吗? Q2:我过拟合了吗? Q3:如何以最好的方式对 CNN 进行建模?
感谢您的宝贵时间
【问题讨论】:
-
为了测试你是否过度拟合,将一些数据分成一个训练集和一个测试集,然后如果你的训练集开始执行你的测试集,你的模型就过度拟合了,因为它不能很好地推广到新的看不见的数据。
-
我正在尝试通过放置一些混淆矩阵、精度和重新计算表的图像,顺序进行编辑。但是,据说我的代码格式不正确。事实上我没有。
-
问题是这个问题被关闭了,因为这个问题没有确切的答案。只要设置正确,ANN 就一直运行良好,无法给出正确的答案来改进模型。所以 Q1 和 Q3 是无法回答的(技术上......)。
标签: keras conv-neural-network gesture-recognition