keras輸出預(yù)測值和真實值方式
在使用keras搭建神經(jīng)網(wǎng)絡(luò)時,有時需要查看一下預(yù)測值和真是值的具體數(shù)值,然后可以進行一些其他的操作。這幾天查閱了很多資料。好像沒辦法直接access到訓(xùn)練時的數(shù)據(jù)。所以我們可以通過回調(diào)函數(shù),傳入新的數(shù)據(jù),然后查看預(yù)測值和真是值。
參考這篇解決:
我的解決方法是這樣的:
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中實現(xiàn) on_epoch_end方法:
x_test,y_test=next(self.dataGen)
這個數(shù)據(jù)生成方法是這樣的
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可以減少內(nèi)存的使用,而且顯得很高級。
補充知識:keras從訓(xùn)練到預(yù)測,函數(shù)的選擇:fit,fit_generator, predict,predict_generator
如下所示:

留下回調(diào)函數(shù)和如何通過預(yù)處理來建立生成輸入的函數(shù)這兩個問題
以上這篇keras輸出預(yù)測值和真實值方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pycharm 如何設(shè)置HTML文件自動補全代碼或標(biāo)簽
這篇文章主要介紹了Pycharm 如何設(shè)置HTML文件自動補全代碼或標(biāo)簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
零基礎(chǔ)寫python爬蟲之爬蟲的定義及URL構(gòu)成
俗話說工欲善其事必先利其器,作為本系列文章的第一篇,我們同樣也需要先利其器,先把爬蟲的定義以及寫爬蟲所需要的基礎(chǔ)知識先介紹給大家。2014-11-11
Python中使用print函數(shù)進行不換行打印問題
這篇文章主要介紹了Python中使用print函數(shù)進行不換行打印問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
解決python3 安裝完P(guān)ycurl在import pycurl時報錯的問題
今天小編就為大家分享一篇解決python3 安裝完P(guān)ycurl在import pycurl時報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Numpy數(shù)組array和矩陣matrix轉(zhuǎn)換方法
這篇文章主要介紹了Numpy數(shù)組array和矩陣matrix轉(zhuǎn)換方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
python 遞歸調(diào)用返回None的問題及解決方法
這篇文章主要介紹了python 遞歸調(diào)用返回None的問題,本文通過實例代碼給大家記錄了解決方案,代碼簡單易懂,非常不錯對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03

