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中sets模块的用法实例
Sep 30 Python
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
Python 日志logging模块用法简单示例
Oct 18 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
Python @property及getter setter原理详解
Mar 31 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
Python可视化工具如何实现动态图表
Oct 23 Python
Python 使用office365邮箱的示例
Oct 29 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 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 团购折扣计算公式
2011/11/24 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
php图像处理类实例
2015/07/28 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JS功能代码集锦
2016/05/04 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
python在指定目录下查找gif文件的方法
2015/05/04 Python
python 读入多行数据的实例
2018/04/19 Python
用Python实现读写锁的示例代码
2018/11/05 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
在django中,关于session的通用设置方法
2019/08/06 Python
python 错误处理 assert详解
2020/04/20 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
优秀士兵先进事迹
2014/02/06 职场文书
合作意向书格式及范文
2014/03/31 职场文书
离婚案件被告代理词
2015/05/23 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android