【问题标题】:confusion matrix in keras cnn model without xtrain xtest ytrain ytest没有xtrain xtest ytrain ytest的keras cnn模型中的混淆矩阵
【发布时间】:2019-04-14 17:51:31
【问题描述】:

我目前正在尝试在我的 cnn 模型代码中实现混淆矩阵。我一直在观看的所有示例都包括使用x_train, x_test, y_train, y_test,但我不知道如何在我的代码上执行此操作,或者我是否能够从 my_model.h5 文件中执行此操作。希望你能帮助我。谢谢。

我在下面留下我的模型代码:

classifier = Sequential()
classifier.add(Conv2D(32, (3,  3), input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size =(2,2)))
classifier.add(Conv2D(32, (3,  3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size =(2,2)))
classifier.add(Conv2D(64, (3,  3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size =(2,2)))
classifier.add(Flatten())
classifier.add(Dense(256, activation = 'relu'))
classifier.add(Dropout(0.5))
classifier.add(Dense(26, activation = 'softmax'))

classifier.compile(
          optimizer = optimizers.SGD(lr = 0.01),
          loss = 'categorical_crossentropy',
          metrics = ['accuracy'])

classifier.summary()

from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

training_set = train_datagen.flow_from_directory(
    'mydata/training_set',
    target_size=(64, 64),
    batch_size=32,
    class_mode='categorical')

test_set = test_datagen.flow_from_directory(
    'mydata/test_set',
    target_size=(64, 64),
    batch_size=32,
    class_mode='categorical')

model = classifier.fit_generator(
    training_set,
    steps_per_epoch=int(steps_per_epoch_user),
    epochs=int(epochs_user),
    validation_data = test_set,
    validation_steps = int(validation_steps_user)
  )

import h5py
classifier.save('my_model.h5')

print(model.history.keys()) 

import matplotlib.pyplot as plt

plt.plot(model.history['acc'])
plt.plot(model.history['val_acc'])
plt.title('model accuracy')
plt.ylabel('acc')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()

plt.plot(model.history['loss'])
plt.plot(model.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()

【问题讨论】:

  • 你的数据集有标签吗?
  • 它们只是标记文件夹中的文件。例如:mydata/training_set/icecreammydata/training_set/pizzamydata/training_set/hotdog 等等。

标签: tensorflow keras conv-neural-network confusion-matrix


【解决方案1】:

我会添加以下代码:

从 sklearn.metrics 导入混淆矩阵

cm = 混淆矩阵(Y_test,Y_test_predicted)

打印('\n','cm=','\n',cm)

有关更多描述性混淆矩阵,请查看以下链接中的 scikit-learn 文档:

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 2020-05-21
    • 2020-09-20
    • 2019-10-20
    • 2020-03-08
    • 1970-01-01
    • 2021-07-28
    • 2021-03-15
    相关资源
    最近更新 更多