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的yield和generator
Mar 10 Python
python中实现k-means聚类算法详解
Nov 11 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
python脚本开机自启的实现方法
Jun 28 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
Django视图、传参和forms验证操作
Jul 15 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
Python 用户输入和while循环的操作
May 23 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
代码生成器 document.write()
2007/04/15 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
Python中replace方法实例分析
2014/08/20 Python
Python字符串替换实例分析
2015/05/11 Python
Python卸载模块的方法汇总
2016/06/07 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Django后台admin的使用详解
2019/07/08 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
尽职尽责村干部自我鉴定
2014/01/23 职场文书
公司应聘求职信
2014/06/21 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书