keras NN 训练期间 60% 的准确度 测试期间 0.0% 的准确度

时间:2021-05-07 12:46:43

标签: python keras conv-neural-network

我已经用 keras 完成了这个 nn,它在训练期间的准确率为 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)

0 个答案:

没有答案
相关问题