Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
作者:qq_42972774 时间:2023-03-28 04:05:22
终于构建出了第一个神经网络,Keras真的很方便。
之前不知道Keras这么方便,在构建神经网络的过程中绕了很多弯路,最开始学的TensorFlow,后来才知道Keras。
TensorFlow和Keras的关系,就像c语言和python的关系,所以Keras是真的好用。
搞不清楚数据的标准化和归一化的关系,想对原始数据做归一化,却误把数据做了标准化,导致用model.predict预测出来的值全是0.0,在网上搜了好久但是没搜到答案,后来自己又把程序读了一遍,突然灵光一现好像是数据归一化出了问题,于是把数据预处理部分的标准化改成了归一化,修改过来之后才能正常预测出来值,才得到应有的数据趋势。
标准化:
(x-mean(x))/std(x) 这是使用z-score方法规范化
归一化:
(x-min(x))/(max(x)-min(x)) 这是常用的最小最大规范化方法
补充知识:keras加载已经训练好的模型文件,进行预测时却发现预测结果几乎为同一类(本人预测时几乎均为为第0类)**
原因:在进行keras训练时候,使用了keras内置的数据读取方式,但是在进行预测时候,使用了自定义的数据读取方式,本人为图片读取。
解决办法查看如下代码:
##############训练:
train_gen = ImageDataGenerator(rotation_range=10,
width_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
fill_mode='constant',
cval=0)
train_generator = train_gen.flow_from_directory(train_path,
target_size=(224, 224),
batch_size=16,
class_mode='categorical',
save_to_dir=train_g,
save_prefix='man',
save_format='jpg')
#############预测
img = cv2.imread(img_path)
img = cv2.resize(img, (row, col))
img = np.expands(img, axis=0)
out = model.predict(img)
# 上述方法是不行的,仔细查看keras内置读取方式,可以观察到内置了load_img方式
# 因此,我们在预测时候,将读取图片的方式改为
from keras.preprocessing.image import load_img, img_to_array
img = load_img(img_path)
img = img_to_array(img, target_size=(row, col))
img = np.expands(img, axis=0)
out = model.predict(img)
注:本文意在说明 对训练数据和预测数据的读取、预处理方式上应该在某种程度上保持一致,从而避免训练结果和真实预测结果相差过大的情况。
来源:https://blog.csdn.net/qq_42972774/article/details/105101935
标签:Keras,model,predict,预测值
0
投稿
猜你喜欢
numpy.random模块用法总结
2023-05-11 00:48:19
Python中scatter函数参数及用法详解
2022-05-03 09:55:58
asp之日期和时间函数示例
2008-04-13 06:50:00
python 发送和接收ActiveMQ消息的实例
2022-08-23 18:45:20
盘点十个超级好用的高级Python脚本
2023-12-04 23:41:27
Python入门基础之变量及字符串
2023-08-08 06:10:11
如何实现论坛的树状记录表展开技术?
2010-05-19 21:37:00
新手必备的Python实用技巧和工具
2022-08-20 04:59:01
mysql load data infile 的用法(40w数据 用了3-5秒导进mysql)
2024-01-19 00:24:22
常见的在Python中实现单例模式的三种方法
2022-11-08 01:42:09
Python识别二维码的两种方法详解
2022-08-20 23:44:12
python绘制汉诺塔
2023-07-09 23:13:19
一个div层打开显示效果 js
2008-05-19 12:35:00
Python ftp上传文件
2023-10-01 06:35:34
mysql游标的原理与用法实例分析
2024-01-15 16:33:36
vue3 自定义指令详情
2024-05-09 15:08:31
Go 结构体序列化的实现
2024-05-21 10:26:40
php session处理的定制
2023-11-15 18:38:12
关于基于字体大小(em)的设计
2008-06-17 15:01:00
python从ftp下载数据保存实例
2022-10-07 13:32:17