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 相关文章推荐
利用Celery实现Django博客PV统计功能详解
May 08 Python
Python实现针对中文排序的方法
May 09 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
python实现数据库跨服务器迁移
Apr 12 Python
python 自定义对象的打印方法
Jan 12 Python
python如何实现代码检查
Jun 28 Python
python利用tkinter实现屏保
Jul 30 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 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中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
jQuery 使用手册(七)
2009/09/23 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
python中的变量如何开辟内存
2018/06/26 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
使用python绘制温度变化雷达图
2019/10/18 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
python 实现线程之间的通信示例
2020/02/14 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
工程业务员工作职责
2013/12/07 职场文书
病媒生物防治方案
2014/05/13 职场文书
合作意向书
2014/07/30 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
导师鉴定意见
2015/06/05 职场文书
职工培训工作总结
2015/08/10 职场文书
用Python实现Newton插值法
2021/04/17 Python
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers