keras输出预测值和真实值方式


Posted in Python onJune 27, 2020

在使用keras搭建神经网络时,有时需要查看一下预测值和真是值的具体数值,然后可以进行一些其他的操作。这几天查阅了很多资料。好像没办法直接access到训练时的数据。所以我们可以通过回调函数,传入新的数据,然后查看预测值和真是值。

参考这篇解决:

https://stackoverflow.com/questions/47079111/create-keras-callback-to-save-model-predictions-and-targets-for-each-batch-durin

我的解决方法是这样的:

from keras.callbacks import Callback
import tensorflow as tf
import numpy as np
class my_callback(Callback):
 def __init__(self,dataGen,showTestDetail=True):
  self.dataGen=dataGen
  self.showTestDetail=showTestDetail
  self.predhis = []
  self.targets = []
 def mape(self,y,predict):
  diff = np.abs(np.array(y) - np.array(predict))
  return np.mean(diff / y)
 def on_epoch_end(self, epoch, logs=None):
  x_test,y_test=next(self.dataGen)
  prediction = self.model.predict(x_test)
  self.predhis.append(prediction)
  #print("Prediction shape: {}".format(prediction.shape))
  #print("Targets shape: {}".format(y_test.shape))
  if self.showTestDetail:
   for index,item in enumerate(prediction):
    print(item,"=====",y_test[index],"====",y_test[index]-item)
  testLoss=self.mape(y_test,prediction)
  print("test loss is :{}".format(testLoss))

画一下知识点,我们在继承的callback中实现 on_epoch_end方法:

x_test,y_test=next(self.dataGen)

这个数据生成方法是这样的

import numpy as np
def shuffleDatas(x,y):

 shuffleIndex=np.arange(len(x))
 np.random.shuffle(shuffleIndex)
 x=x[shuffleIndex]
 y=y[shuffleIndex]
 return x,y
def dataGen(x,y,batchsize=8,shuffle=True):
 assert len(x) == len(y)
 while True:
  if shuffle:
   x,y=shuffleDatas(x,y)
  index=0
  while index+batchsize<len(x):
   yield (x[index:index+batchsize],y[index:index+batchsize])
   index=index+batchsize

使用yield可以减少内存的使用,而且显得很高级。

补充知识:keras从训练到预测,函数的选择:fit,fit_generator, predict,predict_generator

如下所示:

keras输出预测值和真实值方式

留下回调函数和如何通过预处理来建立生成输入的函数这两个问题

以上这篇keras输出预测值和真实值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
Python自动扫雷实现方法
Jul 25 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
python实现比较文件内容异同
Jun 22 Python
Python列表解析配合if else的方法
Jun 23 Python
python递归全排列实现方法
Aug 18 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
关于python中remove的一些坑小结
Jan 04 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 #Python
浅谈keras 模型用于预测时的注意事项
Jun 27 #Python
python suds访问webservice服务实现
Jun 26 #Python
解析Python 偏函数用法全方位实现
Jun 26 #Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 #Python
使用pytorch实现论文中的unet网络
Jun 24 #Python
python连接mysql有哪些方法
Jun 24 #Python
You might like
php 表单验证实现代码
2009/03/10 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python实现登陆文件验证方法
2018/10/06 Python
python多线程同步之文件读写控制
2021/02/25 Python
浅析Django中关于session的使用
2019/12/30 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
公司董事长职责
2013/12/12 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
投资意向书
2014/07/30 职场文书
初中优秀学生评语
2014/12/29 职场文书
求职推荐信范文
2015/03/27 职场文书
党支部工作总结2015
2015/04/01 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL