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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
python通过post提交数据的方法
May 06 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
Python 数据结构之队列的实现
Jan 22 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
Python中实现switch功能实例解析
Jan 11 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
Oct 11 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 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生成静态文件的多种方法分享
2012/07/17 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php模拟post提交数据的方法
2015/02/12 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
JavaScript 私有成员分析
2009/01/13 Javascript
js 异步处理进度条
2010/04/01 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
JS实现打字游戏
2019/12/17 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
优秀士兵先进事迹
2014/02/06 职场文书
党员转正大会主持词
2015/07/02 职场文书
团干部培训班心得体会
2016/01/06 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
Python序列化与反序列化相关知识总结
2021/06/08 Python
vue实现锚点定位功能
2021/06/29 Vue.js