Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)


Posted in Python onJuly 07, 2020

终于构建出了第一个神经网络,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)

注:本文意在说明 对训练数据和预测数据的读取、预处理方式上应该在某种程度上保持一致,从而避免训练结果和真实预测结果相差过大的情况。

以上这篇Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxPython 入门教程
Oct 07 Python
学习python 之编写简单乘法运算题
Feb 27 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
对Python3中的input函数详解
Apr 22 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
pytorch实现MNIST手写体识别
Feb 14 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python学习之os模块及用法
Jun 03 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 #Python
Django REST Swagger实现指定api参数
Jul 07 #Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 #Python
python db类用法说明
Jul 07 #Python
python文件编写好后如何实践
Jul 07 #Python
python 删除excel表格重复行,数据预处理操作
Jul 06 #Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 #Python
You might like
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
JavaScript 密码强度判断代码
2009/09/05 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
Python使用functools实现注解同步方法
2018/02/06 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
工厂会计员职责
2014/02/06 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
教师节商场活动方案
2014/02/13 职场文书
社区助残日活动总结
2014/08/29 职场文书
2014年护士长工作总结
2014/11/11 职场文书
明星邀请函
2015/02/02 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
节约用水广告语60条
2019/11/14 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
windows系统搭建WEB服务器详细教程
2022/08/05 Servers