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线程锁(thread)学习示例
Dec 04 Python
python实现rest请求api示例
Apr 22 Python
Python中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
Python写的服务监控程序实例
Jan 31 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
基于OpenCV的路面质量检测的实现
Nov 04 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实现的短网址算法分享
2014/06/20 PHP
php获取excel文件数据
2017/04/21 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
JavaScript版代码高亮
2006/06/26 Javascript
JavaScript与函数式编程解释
2007/04/27 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
Angular路由简单学习
2016/12/26 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
React实现全选功能
2020/08/25 Javascript
Python字符串格式化的方法(两种)
2017/09/19 Python
Python实现的读写json文件功能示例
2018/06/05 Python
django Admin文档生成器使用详解
2019/07/22 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
python3调用windows dos命令的例子
2019/08/14 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
化工专业应届生求职信
2013/11/08 职场文书
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
三八活动策划方案
2014/08/17 职场文书
2015年领班工作总结
2015/04/29 职场文书
承诺书范本大全
2015/05/04 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python