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  连接字符串(join %)
Sep 06 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Python多线程爬虫简单示例
Mar 04 Python
Django Highcharts制作图表
Aug 27 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python实现AES加密和解密
Mar 27 Python
python3 pygame实现接小球游戏
May 14 Python
python构造函数init实例方法解析
Jan 19 Python
python连接PostgreSQL过程解析
Feb 09 Python
学会Python数据可视化必须尝试这7个库
Jun 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
windows xp下安装pear
2006/12/02 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
python statsmodel的使用
2020/12/21 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
迷你西餐厅创业计划书范文
2013/12/31 职场文书
手机促销活动方案
2014/02/05 职场文书
进口业务员岗位职责
2014/04/06 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
接收函
2019/04/22 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
新手入门Mysql--概念
2021/06/18 MySQL
python ansible自动化运维工具执行流程
2021/06/24 Python
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android