keras NN точность 60% во время тренировки точность 0,0% во время теста

#python #keras #conv-neural-network

Вопрос:

Я сделал это nn с keras, которые имеют точность 60% во время тренировок. Проблема в том, что когда я пытаюсь протестировать свою сеть с помощью набора данных, я получаю сеть, которая абсолютно уверена, что все изображения относятся к первому классу n. В моем проекте есть 3 класса n,b и v , которые обозначают норму, бактерии и вирусы. Все изображения, которые я тестировал, относятся к классам B, поэтому мне интересно, не ошибся ли я в коде прогнозирования, из-за которого мой nn так уверен, что все изображения относятся к классу n

 import cv2
import tensorflow as tf
from IPython.display import Image

CATEGORIES = ["normale", "batterico","virus"]

def scan(semipath,campioni: int):
    cb = 0
    cn = 0
    cv = 0
    for i in range(1,campioni):
        cpath = path   semipath  '.'  str(i)   '.jpeg'
        print(cpath)
        #prep_array = prepare(cpath)
        imgp = keras.preprocessing.image.load_img(cpath, target_size=(224, 224, 3))
        img_array = keras.preprocessing.image.img_to_array(imgp)
        img_array = tf.expand_dims(img_array, 0) 
        prediction = model.predict(img_array)
        print(prediction)
        pn = prediction[0][0]
        pb = prediction[0][1]
        pv = prediction[0][2]
        if pn>pb and pn>pv:
            cn = cn  1
        if pb>pn and pb>pv:
            cb = cb  1
        if pv>pb and pv>pn:
            cv = cv  1
            
        print('res:pn:' str(pn) ' pb:' str(pb) ' pv:' str(pv))
        
    print(str(campioni) ' immagini ' semipath ':' str(cn) ' classificate come normali,' str(cb) ' classificate come batteriche,' str(cn) ' classificate come virali')
    return none
            
nuovo_model = keras.models.load_model('D:/tf/modelSaved')
model = nuovo_model
print('esempio percorso: D:/tf/archive/chest_xray/test/virus.54.jpeg')
modei = input("modalità da usare: a- automatica, m - manuale:")
if modei == 'm':
    [...]
elif modei == 'a':
    path = 'D:/tf/NeoArchiveBilanciato/test/'
    print('automatica:')
    nb = 242 #numero immagini di questa categoria
    nn = 234 #numero immagini di questa categoria
    nv = 148 #numero immagini di questa categoria
    scan('bacteria',nb)
    scan('bacteria',nn)
    scan('bacteria',nv)