当打印CNN模型的模型摘要时,输入层是垃圾整数。而且,训练后的模型有96%的误差

时间:2019-03-29 07:38:20

标签: python keras conv-neural-network

我正在尝试创建一个使用CNN识别静态手势的模型。我有26个手势,所有手势都有2400张图像。但是,该模型缺少输入层,误差为96%。

我很新,所以对大多数事情一无所知。我尝试过更改某些东西而无济于事。

///这是我的模特

def cnn_model():
    num_of_classes = get_num_of_classes()
    model = Sequential()
    model.add(Conv2D(16, (2,2), input_shape=(image_x, image_y, 1), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='same'))
    model.add(Conv2D(32, (5,5), activation='relu'))
    model.add(MaxPooling2D(pool_size=(5, 5), strides=(5, 5), padding='same'))
    model.add(Conv2D(64, (5,5), activation='relu'))
    #model.add(MaxPooling2D(pool_size=(5, 5), strides=(5, 5), padding='same'))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(num_of_classes, activation='softmax'))
    sgd = optimizers.SGD(lr=1e-2)
    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    filepath="cnn_model_keras2.h5"
    checkpoint1 = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
    #checkpoint2 = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
    callbacks_list = [checkpoint1]
    from keras.utils import plot_model
    plot_model(model, to_file='model.png', show_shapes=True)
    return model, callbacks_list

/// training and testing

model, callbacks_list = cnn_model()
    model.summary()
    model.fit(train_images, train_labels, validation_data=(test_images, test_labels), epochs=20, batch_size=500, callbacks=callbacks_list)
    scores = model.evaluate(test_images, test_labels, verbose=0)

我预计损失最多为20%,但损失为96%。还有,

预期模型摘要:

https://imgur.com/66Yggvh

我得到了什么

https://imgur.com/AzpgvFN

这是我在任何论坛上的第一个问题,请耐心等待。

1 个答案:

答案 0 :(得分:0)

我认为您可能会在这里跟踪到这个奇怪的错误:keras plot_model inserts strange first input row containing long integer number #11376

在Keras中,这似乎是一个未解决的问题。也许检查您的版本。