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 相关文章推荐
Python生成随机MAC地址
Mar 10 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
Python管理Windows服务小脚本
Mar 12 Python
Python 读取某个目录下所有的文件实例
Jun 23 Python
flask框架中勾子函数的使用详解
Aug 01 Python
对python中的高效迭代器函数详解
Oct 18 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
python selenium操作cookie的实现
Mar 18 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 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连接mysql数据库代码
2009/03/10 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
PHP制作万年历
2015/01/07 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
python 求10个数的平均数实例
2019/12/16 Python
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
2014社区三八妇女节活动总结
2014/03/01 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers