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 相关文章推荐
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
解决python删除文件的权限错误问题
Apr 24 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
利用Python复制文件的9种方法总结
Sep 02 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
Python基于numpy模块实现回归预测
May 14 Python
初学者学习Python好还是Java好
May 26 Python
Python通过递归函数输出嵌套列表元素
Oct 15 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
Express的路由详解
2015/12/10 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
Python数据操作方法封装类实例
2017/06/23 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
python批量修改ssh密码的实现
2019/08/08 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
python 如何快速复制序列
2020/09/07 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
化学相关工作求职信
2013/10/02 职场文书
优秀教师演讲稿
2014/05/06 职场文书
设计专业自荐信
2014/06/19 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
MySQL学习之基础命令实操总结
2022/03/19 MySQL
Python面试不修改数组找出重复的数字
2022/05/20 Python