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中字典的合并值相加与异或对比
Jun 04 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
pytorch 数据集图片显示方法
Jul 26 Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
python实现飞船大战
Apr 24 Python
python 代码运行时间获取方式详解
Sep 18 Python
Python urlopen()参数代码示例解析
Dec 10 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 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
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
easyui validatebox验证
2016/04/29 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
JS实现li标签的删除
2019/04/12 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
python实现简单温度转换的方法
2015/03/13 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
Python实现图片识别加翻译功能
2019/12/26 Python
python对XML文件的操作实现代码
2020/03/27 Python
Python如何生成xml文件
2020/06/04 Python
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
党员创先争优承诺书
2014/03/26 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
化验员岗位职责
2015/02/14 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python