我正在使用COVID-19 Radiography Database创建一个预测用户是否使用新冠肺炎的模型。
这是我拥有的代码:
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
tf.random.set_seed(1234)
train_data_dir="X_train_data/"
#Used Sequential
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(8, (3, 3), activation='relu', input_shape=(64, 64, 3)))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2), strides=None, padding="valid"))
model.add(tf.keras.layers.Conv2D(16, (3, 3), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2), strides=None, padding="valid"))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(32))
model.add(tf.keras.layers.Dropout(.1, input_shape=(32,)))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
#Defining optimizer
from tensorflow.keras.optimizers import Adam
model.compile(optimizer=Adam(lr=0.0001), loss='binary_crossentropy', metrics=['accuracy'])
# Directing Images to train folder
from tensorflow.keras.preprocessing.image import ImageDataGenerator
img_height, img_width = 64,64
batch_size = 16
train_datagen = ImageDataGenerator(validation_split=0.3) # set validation split
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='binary',
subset='training') # set as training data
# Splitting images for validation set
validation_generator = train_datagen.flow_from_directory(
train_data_dir, # same directory as training data
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='binary',
subset='validation') # set as validation data
# Training the model
trainer=model.fit(train_generator, validation_data=validation_generator, epochs=10, verbose=2)
model.save("cnn_covid_x-ray_v1.h5") #you can load this model from output part
训练准确率为97.82%,验证准确率为96.78%。现在如何使用h5
文件进行预测?例如,我想输入一张图像,假设是一张新冠肺炎x射线,并获得它属于COVID-19
类的可能性和属于NORMAL
类的可能性的百分比。
发布于 2021-01-10 04:13:36
您必须做的第一件事是确保您希望使用的图像经过与训练图像相同的预处理。我注意到你没有在ImageDataGenerator中重新缩放图像。如果它们之前是重新缩放的,请确保以相同的方式重新缩放图像。接下来,将您的图像大小调整为64X64。将图像馈送到model.predict。它将产生一个概率值作为输出。如果该值小于或等于.5,则为0级;如果大于.5,则为1级。要知道哪个是哪个,请使用class_dict=train_generator.class_indices。打印字典。它的形式是class name:index,其中class name是与索引关联的目录的名称。例如,如果您的目录名为Covid和NonCovid,您的字典将如下所示:{Covid:0,NonCovid:1}
https://stackoverflow.com/questions/65649401
复制相似问题