下面的代码是我的CNN模型,我希望能够绘制它的准确率和损失,任何帮助都将不胜感激。我希望使用matplotlib来绘制输出,所以需要一些建议,因为我不确定如何着手。需要绘制两张图,一张是训练和验证的准确率,另一张是训练和验证的损失。
bin_labels = {1:'EOSINOPHIL',2:'LYMPHOCYTE',3:'MONOCYTE',4:'NEUTROPHIL'}def CNN(imgs,img_labels,test_imgs,test_labels,stride): #类别数量(2) num_classes = len(img_labels[0]) #图像大小 img_rows,img_cols=imgs.shape[1],imgs.shape[2] input_shape = (img_rows, img_cols, 3) #创建模型 model = Sequential() #第一个卷积层 model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape, strides=stride)) #第一个最大池化层 model.add(MaxPooling2D(pool_size=(2, 2))) #第二个卷积层 model.add(Conv2D(64, (3, 3), activation='relu')) #第二个最大池化层 model.add(MaxPooling2D(pool_size=(2, 2))) #第三个卷积层 model.add(Conv2D(128, (3, 3), activation='relu')) #第三个最大池化层 model.add(MaxPooling2D(pool_size=(2, 2))) #将矩阵转换为全连接层 model.add(Flatten()) #Dense函数将FCL转换为128个值 model.add(Dense(128, activation='relu')) #最终的Dense层,应用softmax函数 model.add(Dense(num_classes, activation='softmax')) #模型参数 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) #在训练模型之前,评估测试数据上的模型 score = model.evaluate(test_imgs,test_labels, verbose=1) print('\nKeras CNN二分类准确率:', score[1],'\n') #模型训练 history = model.fit(imgs,img_labels, shuffle = True, epochs=3, validation_data = (test_imgs, test_labels)) #在训练模型之后,评估测试数据上的模型 score = model.evaluate(test_imgs,test_labels, verbose=1) print('\nKeras CNN二分类准确率:', score[1],'\n') #预测测试数据的标签 y_pred = model.predict(test_imgs) Y_pred_classes = np.argmax(y_pred,axis=1) Y_true = np.argmax(test_labels,axis=1) #正确标签 for i in range(len(Y_true)): if(Y_pred_classes[i] == Y_true[i]): print("预测的类别是 : " , Y_pred_classes[i]) print("真实的类别是 : " , Y_true[i]) break #基于真实Y值和预测Y值制作混淆矩阵 confusion_mtx = [Y_true, Y_pred_classes] #模型摘要 model.summary() return model,confusion_mtxmodel,conf_mat = CNN(X_train,y_trainHot,X_test,y_testHot,1);
回答:
当我处理CNN模型时,这个方法对我有用:
你可以看到绘制的图像