有人联系我,因为他们想要tflite模型的末尾!当我真正创建一个前端时,它预测一切都是正的,准确率为99.9%!只是想知道是我的错还是模型不正确!
这是我用于预测的代码:
model = tf.lite.Interpreter(model_path='Classifier\trained_models\model.tflite')
def predict(imgUrl , model=model):
interpreter = model
interpreter.allocate_tensors()
output = interpreter.get_output_details()[0] # Model has single output.
input = interpreter.get_input_details()[0]
img = image.load_img(imgUrl, target_size=(227, 227))
img = image.img_to_array(img)
img /= 255
interpreter.set_tensor(input['index'], [img])
interpreter.invoke()
output_data = interpreter.get_tensor(output['index'])
output_probs = tf.math.softmax(output_data)
pred_label = tf.math.argmax(output_probs)
print(output_probs)
# classes = model.predict(images)
encode_label = np.argmax(output_probs,axis=-1)
print(encode_label)
print(pred_label)
print(output_data)
lb = {0:'Normal', 1:'Head and Neck Cancer'}
chances = str(max(output_data.flatten().tolist())*100)[:4] + '%'
print(chances)
encoded = str(lb[encode_label[0]])
print(output_probs)
print(encoded)
编辑[1]
预处理
train_ds = tf.keras.utils.image_dataset_from_directory(
"/content/drive/MyDrive/FYP DATA",
validation_split=0.1,
subset="training",
seed=123,
image_size=(227, 227),
batch_size=32)
val_ds = tf.keras.utils.image_dataset_from_directory(
"/content/drive/MyDrive/FYP DATA",
validation_split=0.1,
subset="validation",
seed=1,
image_size=(227, 227),
batch_size=32)
我终于解决了这个问题。事实上,在训练模型时,数据没有经过预处理,但在进行预测时,我正在对数据进行预处理!因此,我刚刚从预测函数中删除了以下行:
img /= 255