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 实现文件的递归拷贝实现代码
Aug 02 Python
一个超级简单的python web程序
Sep 11 Python
Python中的rfind()方法使用详解
May 19 Python
Python易忽视知识点小结
May 25 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
详解Python3中yield生成器的用法
Aug 20 Python
Python enumerate函数功能与用法示例
Mar 01 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
Python模块汇总(常用第三方库)
Oct 07 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 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用户指南-cookies部分
2006/10/09 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
php缓存技术详细总结
2013/08/07 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
python字典基本操作实例分析
2015/07/11 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
团委竞选演讲稿
2014/04/24 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
优秀班主任材料
2014/12/16 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技
浅谈Node的内存泄露问题
2022/05/06 NodeJs