我制作了一个keras CNN模型来预测不同的手势,但是该模型并未预测正确的输出。我有10节课。但是对于某些图像,它显示的结果类似[0,1,0,0,1,0,0,0,0,0]。我的问题是为什么会这样。我的建筑。
model = Sequential()
model.add(Conv2D(32, (5,5), input_shape=x.shape[1:]))
model.add(Conv2D(32, (5,5), input_shape=x.shape[1:]))
model.add(Conv2D(32, (5,5), input_shape=x.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(64, (3,3), input_shape=x.shape[1:]))
model.add(Conv2D(64, (3,3), input_shape=x.shape[1:]))
model.add(Conv2D(64, (3,3), input_shape=x.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(2,2))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer = 'adam',
metrics = ['accuracy']
)
model.fit(x, y, epochs=10)
您正在使用binary_crossentropy
应用于二进制分类问题的损失。对于多类问题,您应该使用categorical_crossentropy
。您可能还想将最后一层的激活更改为softmax
我可以看到这是显而易见的工程问题。话虽如此,您可能必须试验层数,时期,学习率等才能获得有效的模型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句