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脚本把sqlAlchemy对象转换成dict的教程
May 29 Python
在windows系统中实现python3安装lxml
Mar 23 Python
python中实现k-means聚类算法详解
Nov 11 Python
Python多层装饰器用法实例分析
Feb 09 Python
代码详解django中数据库设置
Jan 28 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Python3 sys.argv[ ]用法详解
Oct 24 Python
python编写俄罗斯方块
Mar 13 Python
5款实用的python 工具推荐
Oct 13 Python
python 制作网站小说下载器
Feb 20 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
Python版中国省市经纬度
2020/02/11 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
幼师自荐信
2013/10/26 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
关于环保的标语
2014/06/13 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
Python基础之变量的相关知识总结
2021/06/23 Python