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用来获得图片exif信息的库实例分析
Mar 16 Python
Python中方法链的使用方法
Feb 23 Python
使用Python编写基于DHT协议的BT资源爬虫
Mar 19 Python
python爬取微信公众号文章的方法
Feb 26 Python
python3转换code128条形码的方法
Apr 17 Python
Python实现 版本号对比功能的实例代码
Apr 18 Python
python实现对变位词的判断方法
Apr 05 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
python搜索算法原理及实例讲解
Nov 18 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
python疲劳驾驶困倦低头检测功能的实现
Apr 04 Python
Python代码实现双链表
May 25 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类与对象中的private访问控制的疑问
2012/11/01 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
基于django传递数据到后端的例子
2019/08/16 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
个人银行贷款担保书
2014/04/01 职场文书
营销与策划专业求职信
2014/06/20 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
趣味运动会开幕词
2015/01/28 职场文书
施工安全员岗位职责
2015/04/11 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android
python中mongodb包操作数据库
2022/04/19 Python
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技