keras输出预测值和真实值方式

 更新时间:2020年06月27日 10:14:53   作者:超级学渣渣  
这篇文章主要介绍了keras输出预测值和真实值方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

在使用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输出预测值和真实值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pytorch中的广播语义

    pytorch中的广播语义

    这篇文章主要介绍了pytorch中的广播语义,pytorch的广播语义即broadcasting semantics,和numpy的很像,下面文章介绍更多相关内容的介绍,需要的小伙伴可以参考一下
    2022-03-03
  • python多进程操作实例

    python多进程操作实例

    这篇文章主要介绍了python多进程操作实例,本文讲解了multiprocessing类的相关方法,然后给出了一个综合实例和运行效果,需要的朋友可以参考下
    2014-11-11
  • python变量前面加星(*)的含义及说明

    python变量前面加星(*)的含义及说明

    这篇文章主要介绍了python变量前面加星(*)的含义及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • python3+mysql查询数据并通过邮件群发excel附件

    python3+mysql查询数据并通过邮件群发excel附件

    这篇文章主要为大家详细介绍了python3+mysql查询数据,并通过邮件群发excel附件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 解决Python复杂zip文件的解压问题

    解决Python复杂zip文件的解压问题

    这篇文章主要介绍了Python复杂zip文件的解压,通过配合 shutil 与 os 标准库中的相关功能,实现将指定任意 zip 压缩包,完好地解压到指定的目录中,需要的朋友可以参考下
    2021-12-12
  • python numpy实现文件存取的示例代码

    python numpy实现文件存取的示例代码

    这篇文章主要介绍了python numpy实现文件存取的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Python SDK实现私服上传下载的示例

    Python SDK实现私服上传下载的示例

    本文主要介绍了Python SDK实现私服上传下载的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
    2021-11-11
  • pycharm如何中导入本地下载好的库

    pycharm如何中导入本地下载好的库

    这篇文章主要介绍了pycharm如何中导入本地下载好的库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • YOLOv5车牌识别实战教程(一)引言与准备工作

    YOLOv5车牌识别实战教程(一)引言与准备工作

    这篇文章主要介绍了YOLOv5车牌识别实战教程(一)引言与准备工作,在这个教程中,我们将一步步教你如何使用YOLOv5进行车牌识别,帮助你快速掌握YOLOv5车牌识别技能,需要的朋友可以参考下
    2023-04-04
  • python使用pynput库操作、监控你的鼠标和键盘

    python使用pynput库操作、监控你的鼠标和键盘

    这篇文章主要介绍了python使用pynput库操作、监控你的鼠标和键盘,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03

最新评论