欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Keras構建神經(jīng)網(wǎng)絡踩坑(解決model.predict預測值全為0.0的問題)

 更新時間:2020年07月07日 09:53:06   作者:qq_42972774  
這篇文章主要介紹了Keras構建神經(jīng)網(wǎng)絡踩坑(解決model.predict預測值全為0.0的問題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

終于構建出了第一個神經(jīng)網(wǎng)絡,Keras真的很方便。

之前不知道Keras這么方便,在構建神經(jīng)網(wǎng)絡的過程中繞了很多彎路,最開始學的TensorFlow,后來才知道Keras。

TensorFlow和Keras的關系,就像c語言和python的關系,所以Keras是真的好用。

搞不清楚數(shù)據(jù)的標準化和歸一化的關系,想對原始數(shù)據(jù)做歸一化,卻誤把數(shù)據(jù)做了標準化,導致用model.predict預測出來的值全是0.0,在網(wǎng)上搜了好久但是沒搜到答案,后來自己又把程序讀了一遍,突然靈光一現(xiàn)好像是數(shù)據(jù)歸一化出了問題,于是把數(shù)據(jù)預處理部分的標準化改成了歸一化,修改過來之后才能正常預測出來值,才得到應有的數(shù)據(jù)趨勢。

標準化:

(x-mean(x))/std(x) 這是使用z-score方法規(guī)范化

歸一化:

(x-min(x))/(max(x)-min(x)) 這是常用的最小最大規(guī)范化方法

補充知識:keras加載已經(jīng)訓練好的模型文件,進行預測時卻發(fā)現(xiàn)預測結果幾乎為同一類(本人預測時幾乎均為為第0類)**

原因:在進行keras訓練時候,使用了keras內(nèi)置的數(shù)據(jù)讀取方式,但是在進行預測時候,使用了自定義的數(shù)據(jù)讀取方式,本人為圖片讀取。

解決辦法查看如下代碼:

##############訓練:
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')

#############預測
img = cv2.imread(img_path)
img = cv2.resize(img, (row, col))
img = np.expands(img, axis=0)
out = model.predict(img)
# 上述方法是不行的,仔細查看keras內(nèi)置讀取方式,可以觀察到內(nèi)置了load_img方式
# 因此,我們在預測時候,將讀取圖片的方式改為
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)

注:本文意在說明 對訓練數(shù)據(jù)和預測數(shù)據(jù)的讀取、預處理方式上應該在某種程度上保持一致,從而避免訓練結果和真實預測結果相差過大的情況。

以上這篇Keras構建神經(jīng)網(wǎng)絡踩坑(解決model.predict預測值全為0.0的問題)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論