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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
python实现将读入的多维list转为一维list的方法
Jun 28 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
python 实现全球IP归属地查询工具
Dec 18 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
Python实现老照片修复之上色小技巧
Oct 16 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
header()函数使用说明
2006/11/23 PHP
PHP 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
python中import与from方法总结(推荐)
2019/03/21 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python FFT合成波形的实例
2019/12/04 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
法律专业个人实习自我鉴定
2013/09/23 职场文书
网吧温馨提示
2015/07/17 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题