#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)