Test资料集验证
1.1 单张图档预测
1.2 多张图档预测
五个模型的准确度对照表
心得
Test资料集验证
1.1 单张图档预测
from tensorflow.keras.preprocessing import image
from keras.models import load_model
from keras import backend as K
import numpy as np
import os
# 关闭GPU加速功能(建议安装无GPU版本,缩短初始化时间)
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
# 开启800字典
words_path = './800_words.txt'
file1 = open(words_path, 'rt', encoding='Big5')
labels = list(file1.read())
file1.close()
# 载入模型
model = load_model('./model/xception_v2/Xception_retrained_v2.h5')
# 读取照片
img_path = './data/test/丁/丁_0.jpg'
try:
img = image.load_img(img_path, target_size=(80, 80))
except Exception as e:
print(img_path, e)
# 图档预处理
img = image.img_to_array(img) # 灰阶
img = np.expand_dims(img, axis=0) # 转换通道
img = img/255 # rescale
# 计算机率与预测结果
pred = model.predict(img)[0]
print(pred) # 机率list
index = np.argmax(pred)
prediction = labels[index]
print(prediction) # 预测结果
图档
结果
1.2 多张图档预测:以flow_from_directory抽取每个epoch的预测样本,再逐次载入记忆体进行预测。
from keras.preprocessing.image import ImageDataGenerator
from keras.models import load_model
from keras import backend as K
# 关闭GPU加速功能
# os.environ["CUDA_VISIBLE_DEVICES"]="-1"
# 载入模型
K.clear_session()
model = load_model('./model/densenet201_v2/10011/Densenet201_checkpoint_v2.h5')
# 设定参数
test_dir = './data/test'
batch_size = 64
target_size = (80, 80)
# 图档前处理
test_datagen = ImageDataGenerator(rescale=1./255)
#从Test资料集抽取每批验证图档
test_generator = test_datagen.flow_from_directory(test_dir,
target_size=target_size,
batch_size=batch_size, shuffle=False)
# 验证test准确率
test_generator.reset()
test_loss, test_acc = model.evaluate_generator(test_generator, steps=test_generator.samples//batch_size, verbose=1)
print('test acc:', test_acc)
print('test loss:', test_loss)
五个模型的准确率对照表
总结:
3.1 以前只是单纯载入预训练模型,随机调整参数,训练後挑选出效果不错的模型。这是第一次看论文,耗费大量时间精力,刚开始研读的前几天,真的挺痛苦的,进度也因此延误。但了解模型的核心理念与架构後,有渐入佳境的感觉,获益良多。
3.2 由於IceptionV4最新版的预训练模型,在Keras中有权重不匹配的问题,目前采用不载入权重的重新训练,需要耗费更多时间。从对照图得知,IceptionV4从头训练效果不好,故後续先不考虑此模型。
3.3 此外,前五天的模型架构与原理的分享,如果内文叙述有误,欢迎大家提出意见,谢谢。
让我们继续看下去...
<<: 找LeetCode上简单的题目来撑过30天啦(DAY19)
注:发文日和截图的日期不一定是同一天,所以价格计算上和当日不同,是很正常的。 声明:这一系列文章并无...
以往 Gradle 只能使用 Groovy 语言撰写 Script,因为我对 Groovy 不熟,所...
Chap.VI Management + Governance 管理方法 Advisor 概观 这边...
有点受不了没什麽演算法底子还要掰出 Leetcode 文章QQ 今天来记录当初学习的过程和後来的想法...
第 13 天啦~~~ 昨天我们谈到 lifecycle, 那我们今天来稍微介绍一下,在生命周期每个阶...