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解析xml成对应的html示例分享
Apr 02 Python
Python中的闭包详细介绍和实例
Nov 21 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
基于python的字节编译详解
Sep 20 Python
Django框架的使用教程路由请求响应的方法
Jul 03 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python3.7 的新特性详解
Jul 25 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
Python3+Flask安装使用教程详解
Feb 16 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
域名查询代码公布
2006/10/09 PHP
php数组合并的二种方法
2014/03/21 PHP
php生成gif动画的方法
2015/11/05 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
php中数组最简单的使用方法
2020/12/27 PHP
小议Javascript中的this指针
2010/03/18 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python字符串的方法与操作大全
2018/01/30 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
中专毕业自我鉴定
2013/10/16 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
高中地理教学反思
2014/01/29 职场文书
远程研修随笔感言
2014/02/10 职场文书
求职信怎么写范文
2014/05/26 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
经销商年会策划方案
2014/05/29 职场文书
违纪检讨书范文
2015/01/27 职场文书
雨中的树观后感
2015/06/03 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js