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 相关文章推荐
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python中的高级函数map/reduce使用实例
Apr 13 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
python右对齐的实例方法
Jul 05 Python
python 实现aes256加密
Nov 27 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 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
yii数据库的查询方法
2015/12/28 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
JavaScript版代码高亮
2006/06/26 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
vue实现拖拽进度条
2021/03/01 Vue.js
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
python提取页面内url列表的方法
2015/05/25 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
python魔法方法-自定义序列详解
2016/07/21 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
python 爬取疫情数据的源码
2020/02/09 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
django列表筛选功能的实现代码
2020/03/27 Python
C++:局部变量能否和全局变量重名
2014/03/03 面试题
网络安全方面的面试题
2016/01/07 面试题
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
读群众路线的心得体会
2014/09/03 职场文书
受伤赔偿协议书
2014/09/24 职场文书
春节慰问信范文
2015/02/15 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书