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中的闭包总结
Sep 18 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
浅谈Python的文件类型
May 30 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 Python
Python中如何添加自定义模块
Jun 09 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
python 读取、写入txt文件的示例
Sep 27 Python
python+opencv实现视频抽帧示例代码
Jun 11 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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
群众路线党课主持词
2014/04/01 职场文书
爱护公物演讲稿
2014/09/09 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
付款承诺函范文
2015/01/21 职场文书
会计工作岗位职责
2015/02/03 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
go xorm框架的使用
2021/05/22 Golang