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中将字典转换为列表的方法
Sep 21 Python
python的re正则表达式实例代码
Jan 24 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
python tkinter组件摆放方式详解
Sep 16 Python
python动态文本进度条的实例代码
Jan 22 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
python 爬取豆瓣网页的示例
Apr 13 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在字符串中查找另一个字符串
2008/11/19 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
vue mounted组件的使用
2018/06/18 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python中的句柄操作的方法示例
2019/06/20 Python
Python类反射机制使用实例解析
2019/12/30 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
校园报刊亭的创业计划书
2014/01/02 职场文书
逃课上网检讨书
2014/02/20 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
求职自荐信怎么写
2015/03/04 职场文书
2015年教师节活动总结
2015/03/20 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
python和anaconda的区别
2022/05/06 Python