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中由于logging模块误用导致的内存泄露
Apr 23 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
Python端口扫描简单程序
Nov 10 Python
Python实现的文本编辑器功能示例
Jun 30 Python
Python类的继承和多态代码详解
Dec 27 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
Django框架反向解析操作详解
Nov 28 Python
Python和Sublime整合过程图示
Dec 25 Python
Python Selenium参数配置方法解析
Jan 19 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
第十四节 命名空间 [14]
2006/10/09 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
企业趣味活动方案
2014/08/21 职场文书
观看信仰心得体会
2014/09/04 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
公司人事管理制度
2015/08/05 职场文书
把77A收信机改造成收音机
2022/04/05 无线电
MySQL时区造成时差问题
2022/04/13 MySQL