Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)踩坑(解決model.predict預(yù)測(cè)值全為0.0的問(wèn)題)
終于構(gòu)建出了第一個(gè)神經(jīng)網(wǎng)絡(luò),Keras真的很方便。
之前不知道Keras這么方便,在構(gòu)建神經(jīng)網(wǎng)絡(luò)的過(guò)程中繞了很多彎路,最開(kāi)始學(xué)的TensorFlow,后來(lái)才知道Keras。
TensorFlow和Keras的關(guān)系,就像c語(yǔ)言和python的關(guān)系,所以Keras是真的好用。
搞不清楚數(shù)據(jù)的標(biāo)準(zhǔn)化和歸一化的關(guān)系,想對(duì)原始數(shù)據(jù)做歸一化,卻誤把數(shù)據(jù)做了標(biāo)準(zhǔn)化,導(dǎo)致用model.predict預(yù)測(cè)出來(lái)的值全是0.0,在網(wǎng)上搜了好久但是沒(méi)搜到答案,后來(lái)自己又把程序讀了一遍,突然靈光一現(xiàn)好像是數(shù)據(jù)歸一化出了問(wèn)題,于是把數(shù)據(jù)預(yù)處理部分的標(biāo)準(zhǔn)化改成了歸一化,修改過(guò)來(lái)之后才能正常預(yù)測(cè)出來(lái)值,才得到應(yīng)有的數(shù)據(jù)趨勢(shì)。
標(biāo)準(zhǔn)化:
(x-mean(x))/std(x) 這是使用z-score方法規(guī)范化
歸一化:
(x-min(x))/(max(x)-min(x)) 這是常用的最小最大規(guī)范化方法
補(bǔ)充知識(shí):keras加載已經(jīng)訓(xùn)練好的模型文件,進(jìn)行預(yù)測(cè)時(shí)卻發(fā)現(xiàn)預(yù)測(cè)結(jié)果幾乎為同一類(本人預(yù)測(cè)時(shí)幾乎均為為第0類)**
原因:在進(jìn)行keras訓(xùn)練時(shí)候,使用了keras內(nèi)置的數(shù)據(jù)讀取方式,但是在進(jìn)行預(yù)測(cè)時(shí)候,使用了自定義的數(shù)據(jù)讀取方式,本人為圖片讀取。
解決辦法查看如下代碼:
##############訓(xùn)練: train_gen = ImageDataGenerator(rotation_range=10, width_shift_range=0.2, shear_range=0.2, zoom_range=0.2, fill_mode='constant', cval=0) train_generator = train_gen.flow_from_directory(train_path, target_size=(224, 224), batch_size=16, class_mode='categorical', save_to_dir=train_g, save_prefix='man', save_format='jpg') #############預(yù)測(cè) img = cv2.imread(img_path) img = cv2.resize(img, (row, col)) img = np.expands(img, axis=0) out = model.predict(img) # 上述方法是不行的,仔細(xì)查看keras內(nèi)置讀取方式,可以觀察到內(nèi)置了load_img方式 # 因此,我們?cè)陬A(yù)測(cè)時(shí)候,將讀取圖片的方式改為 from keras.preprocessing.image import load_img, img_to_array img = load_img(img_path) img = img_to_array(img, target_size=(row, col)) img = np.expands(img, axis=0) out = model.predict(img)
注:本文意在說(shuō)明 對(duì)訓(xùn)練數(shù)據(jù)和預(yù)測(cè)數(shù)據(jù)的讀取、預(yù)處理方式上應(yīng)該在某種程度上保持一致,從而避免訓(xùn)練結(jié)果和真實(shí)預(yù)測(cè)結(jié)果相差過(guò)大的情況。
以上這篇Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)踩坑(解決model.predict預(yù)測(cè)值全為0.0的問(wèn)題)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python中不同圖表的數(shù)據(jù)可視化的實(shí)現(xiàn)
數(shù)據(jù)可視化是以圖形格式呈現(xiàn)數(shù)據(jù)。它通過(guò)以簡(jiǎn)單易懂的格式匯總和呈現(xiàn)大量數(shù)據(jù),幫助人們理解數(shù)據(jù)的重要性,并有助于清晰有效地傳達(dá)信息。本文為大家準(zhǔn)備了Python實(shí)現(xiàn)不同圖表數(shù)據(jù)可視化的代碼,需要的可以參考一下2022-08-08一文讓你徹底搞懂Python中__str__和__repr__
這篇文章主要介紹了Python中的__str__和__repr__的異同,__str__和__repr__是基本的內(nèi)置方法,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以參考閱讀下2023-05-05Python關(guān)于OS文件目錄處理的實(shí)例分享
在本篇文章里小編給大家整理的是一篇關(guān)于Python關(guān)于OS文件目錄處理的實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)一下。2021-05-05python實(shí)現(xiàn)一般游戲的自動(dòng)點(diǎn)擊具體操作
這篇文章主要介紹了python實(shí)現(xiàn)一般游戲的自動(dòng)點(diǎn)擊,本文給大家分享具體操作代碼及需要的軟件,需要的朋友可以參考下2021-10-10解決python 讀取npy文件太大不能完全顯示的問(wèn)題
這篇文章主要介紹了解決python 讀取npy文件太大不能完全顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03pycharm 多行批量縮進(jìn)和反向縮進(jìn)快捷鍵介紹
這篇文章主要介紹了pycharm 多行批量縮進(jìn)和反向縮進(jìn)快捷鍵介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01