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查看多台服务器进程的脚本分享
Jun 11 Python
python的绘图工具matplotlib使用实例
Jul 03 Python
python插入数据到列表的方法
Apr 30 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
python2 与 python3 实现共存的方法
Jul 12 Python
python设定并获取socket超时时间的方法
Jan 12 Python
python解析xml简单示例
Jun 21 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
python中温度单位转换的实例方法
Dec 27 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 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
php遍历CSV类实例
2015/04/14 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
Python contextlib模块使用示例
2015/02/18 Python
python中查看变量内存地址的方法
2015/05/05 Python
django序列化serializers过程解析
2019/12/14 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
详解python内置模块urllib
2020/09/09 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
游戏商店:Eneba
2020/04/25 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
爱祖国演讲稿
2014/05/04 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL
canvas 中如何实现物体的框选
2022/08/05 Javascript
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技