我制作了一个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)
答案 0 :(得分:0)
您正在使用binary_crossentropy
损失,该损失应用于二进制分类问题。对于多类问题,应使用categorical_crossentropy
。您可能还想将最后一层的激活更改为softmax
这是我所看到的明显的工程问题;话虽如此,您可能必须试验层数,时期,学习率等才能获得有效的模型。