python - keras NN 100% 确定我所有的照片都在头等舱
问题描述
我已经用 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)
解决方案
推荐阅读
- r - 如何为ggplot中箱线图中的中值文本着色?
- reactjs - 我怎么能告诉打字稿道具来自反应克隆元素?
- bash - crontab 在终端中编辑 cron 任务
- kubernetes - 在 Kubernetes 的另一个脚本中运行 python 脚本的 Pod 中执行 bash 命令
- html - 如何彻底改变按钮 CSS 的样式
- redux - 有没有更好的方法在捕获拒绝时链接异步 thunk?
- python-3.x - ipywidgets 的跨平台兼容性
- android - 迁移到 androidX 时出现异常
- python - 如何对目录中的所有文件执行 python 脚本
- javascript - 如果满足一个条件,则想要隐藏页面中的特定元素