有人知道我的代码有问题吗?分类报告似乎有问题

问题描述

我这里有问题。 问题出在分类报告中。 预测似乎不正确。我不知道问题出在哪里。

有人可以帮我吗?

这是我的代码

from keras.preprocessing.image import ImageDataGenerator

aug = ImageDataGenerator(rescale=1./255,shear_range=0.2,horizontal_flip=True,rotation_range=45,vertical_flip=True,fill_mode='nearest',height_shift_range=0.5,width_shift_range=0.5
                     )

training_set = aug.flow_from_directory("/content/drive/My Drive/RESEARCH CENTER/Dataset/train",target_size=(224,224),color_mode="rgb",shuffle=True,class_mode='binary')

validation_set = aug.flow_from_directory("/content/drive/My Drive/RESEARCH CENTER/Dataset/test",class_mode='binary')
    from tensorflow.keras.models import Sequential
from tensorflow.keras import regularizers
from tensorflow.keras.layers import InputLayer,Dense,Conv2D,AvgPool2D,Flatten,Batchnormalization,Dropout,MaxPooling2D
from tensorflow.keras.optimizers import Adam
from keras import models   

# Feature Extraction Layer
model = Sequential()

model.add(InputLayer(input_shape=[224,224,3]))
model.add(Conv2D(filters=16,kernel_size=3,strides=1,padding='same',activation='relu'))
model.add(Batchnormalization())
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(filters=32,2)))
model.add(Conv2D(filters=64,2)))
model.add(Conv2D(filters=128,2)))
#model.add(Conv2D(filters=256,activation='relu'))
#model.add(Batchnormalization())
#model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))
model.add(Flatten())

# Fully Connected Layer
model.add(Dense(256,activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(1,activation='sigmoid'))

print(model.summary())

    model.compile(optimizer=Adam(lr=0.001),loss='binary_crossentropy',metrics=['acc'])

H = model.fit(training_set,steps_per_epoch=int(len(training_set)),epochs=1000,validation_data=validation_set,validation_steps=int(len(validation_set)),callbacks=[tensorboard_callback])

%matplotlib inline

import matplotlib.pyplot as plt
import numpy as np


plt.style.use("ggplot")
plt.figure()
plt.plot(np.arange(0,1000),H.history["loss"],label="train_loss")
plt.plot(np.arange(0,H.history["val_loss"],label="val_loss")
plt.title("Loss Plot")
plt.xlabel("Epoch #")
plt.ylabel("Loss")
plt.ylim([0.0,15.0])
plt.legend()
plt.show()


plt.style.use("ggplot")
plt.figure()
plt.plot(np.arange(0,H.history["acc"],label="train_acc")
plt.plot(np.arange(0,H.history["val_acc"],label="val_acc")
plt.title("Accuracy Plot")
plt.xlabel("Epoch #")
plt.ylabel("Acc")
plt.ylim([-3,3.0])
plt.legend()
plt.show()

from sklearn.metrics import classification_report,confusion_matrix
from sklearn import metrics
import numpy as np

ypred = model.predict(validation_set,verbose=1)
labels = (ypred > 0.5).astype(np.int)
print(metrics.classification_report(validation_set.classes,labels))

但准确率似乎不正确,而在训练中显示为 0-%,但在分类报告中仅为 50%

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)