keras输出预测值和真实值
在使用keras搭建神经网络时,有时需要查看一下预测值和真是值的具体数值,然后可以进行一些其他的操作。这几天查阅了很多资料。好像没办法直接access到训练时的数据。所以我们可以通过回调函数,传入新的数据,然后查看预测值和真是值。参考这篇解决:
我的解决方法是这样的:
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输出预测值和真实值的更多相关文章
- django序列化时使用外键的真实值
展示: 普通情况下序列化得到的外键的内容仅仅是id: ... { fields: { uat_date: "2015-07-25", statu: "CG", ...
- ComboBox的真实值和显示值
一.类型 /// <summary> /// 下拉框值类型 /// </summary> public class TextAndValue { /// <summary ...
- keras输出中间层结果,某一层的权重、偏置
转载:https://blog.csdn.net/hahajinbu/article/details/77982721 from keras.models import Sequential,Mode ...
- Keras输出每一层网络大小
示例代码: model = Model(inputs=self.inpt, outputs=self.net) model.compile(loss='categorical_crossentropy ...
- kettle查询出来的真实值被识别为null
问题描述: 通过关联表查询出来的applyId(申请编号),在数据流里也是能看到的,但是在写入到数据表中的时候,由于设置了这个字段不能为空,所以一直报错. 问题实质: 数据流内存在的数据却不能保存,原 ...
- TF之AE:AE实现TF自带数据集数字真实值对比AE先encoder后decoder预测数字的精确对比—Jason niu
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #Import MNIST data from t ...
- Keras 入门
“sample”“batch”“epoch” Sample:样本,比如:一张图像是一个样本,一段音频也是一个样本. Batch:批,含有N个样本的集合.每一个batch的样本都是独立的并行处理.在训练 ...
- keras 自定义 custom 函数
转自: https://kexue.fm/archives/4493/,感谢分享! Keras是一个搭积木式的深度学习框架,用它可以很方便且直观地搭建一些常见的深度学习模型.在tensorflow出来 ...
- 自我学习与理解:keras框架下的深度学习(三)回归问题
本文主要是使用keras对其有的波士顿房价数据集做一个回归预测,其代码架构与之前一样(都只是使用多层感知机):数据的预处理.搭建网络框架.编译.循环训练以及测试训练的网络模型.其中除了数据预处理与之前 ...
随机推荐
- java - day016 - IO续(输入输出), 手写双向链表
课程回顾 对象的创建过程 类加载 加载父类,父类的静态变量分配内存 加载子类,子类的静态变量分配内存 父类静态变量赋值运算, 和静态初始化块 子类静态变量赋值运算, 和子类初始化块 创建对象 创建父类 ...
- jquery中的ajax方法(备忘)
参考:https://www.cnblogs.com/tylerdonet/p/3520862.html w3school:http://www.w3school.com.cn/jquery/ajax ...
- 【问题】root账号的UID和GID永远是0吗?
参考:Does the root account always have UID/GID 0? 这实际上是2个问题 Does the superuser account always have uid ...
- /etc/apt/sources.list 和 /etc/apt/sources.list.d
转自:大数据云技术基础之Linux源:/etc/apt/sources.list文件 导读 1./etc/apt/sources.list的作用是什么?2.为什么会产生 /etc/apt/source ...
- SATB深入详解与问题剖析【纯理论】
延着上一次[https://www.cnblogs.com/webor2006/p/11147893.html]的理论继续. SATB: 在G1中,使用的是SATB(Snapshot-At-The-B ...
- [课本10.1.4]JDBC数据库连接池- C3P0数据源--通过构造方法创建数据源对象--通过配置文件创建数据源对象[推荐]
JDBC- C3P0数据源 /*重点提醒*/ 连接数据库的较低的jar包版本会与较高版本的mysql版本有冲突; 通过把mysql 8.0的版本降到5.5, jar包仍使用较高的 mysql-conn ...
- 新闻系统——SQLHelper助手优化
在前面我们机房重构的时候已经用过了SQLHelper,但当时就是只会应用,知道利用SQLHelper能够帮助我们连接数据库,但对于怎样书写还是不太清楚,今天就揭开这层神秘的面纱,来真正体验如何来编写S ...
- JavaScript常用类库推荐
Axios Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 [中文说明], [Github], [教程] Lodash 一致性.模块化.高性能的 Jav ...
- java中使用redis --- Set集合的简单应用
1.java代码 public class RedisTest01 { public static void main(String[] args){ // connect redis server ...
- 浅析Scrapy框架运行的基本流程
本篇博客将从Twisted的下载任务基本流程开始介绍,然后再一步步过渡到Scrapy框架的基本运行流程,其中还会需要我们自定义一个Low版的Scrapy框架.但内容不会涉及太多具体细节,而且需要注意的 ...