TensorFlow學習之路(五)

2021-10-04 01:27:38 字數 2826 閱讀 5138

在前面四個章節中,我們已經成功構建好了影象以及**了結果

小小有些激動的我還是有些不爽,畢竟還是使用著資料集來進行的結果**,誰知道是不是串通著來騙我的,emmm,那麼,今天我們自己手寫乙個數字進行檢測看看能不能通過我們訓練的模型檢測出來

首先我們先用一張a4紙寫乙個數字,寫正常點別龍飛鳳舞就行,我寫了個數字3

import cv2

import matplotlib.pyplot as plt

#讀取img=cv2.imread(

'num.png'

)#轉換灰度圖

img=cv2.cvtcolor(img,cv2.color_bgr2gray)

顯示看一下

emmmm[心情複雜],一言難盡,畫面好嘈雜啊,來我們濾個波

加個高斯自適應濾波

#高斯自適應濾波

完美,注意我這裡使用了兩次中值濾波,因為我發現第一次中值濾波後使用高斯還是有很多噪點,乾脆在多一次濾波,然後就可以得到很完美的影象

當我沉浸在濾波的小竊喜裡面的時候,突然想起,我的模型是白底黑字啊,這個肯定識別不了

emmm,那就。。那就。。把反過來吧

#取反

好了,不愧是我

在前面的章節有提到,神經網路的輸入格式是3x32x32的float32的格式,我們必須嚴格按照他的格式來,我們縮放處理一下影象格式

#縮放影象

img=cv2.resize(img,32,

32)#轉換型別

img=img.astype(

'float32'

)#正則化

img/=

255

同時為了滿足維度要求,我們還要增加維度

#增加維度為輸入的規定格式

img=img.reshape(1,

32,32,

1)

以上影象已經完全符合模型的輸入要求了

在此之前我們已經訓練好了模型存在本地了,現在只需要把模型載入出來就好了

#載入模型

model=tf.keras.models.load_model(

'model.h5'

)

載入好模型之後直接進行**就可以看到結果了

#**結果

pred=model.predict(img)

#輸出**的最大概率值

print

(pred.argmax(

))

好的,我親愛的朋友們,它給我輸出了個2

它哪像2了??

它明擺了欺負我,嘲諷我呢,你才2

整理好心情,我們在濾波的那裡調整一下。。

。。調整完後**一下

3:你才是7你全家才是7

7:對啊,我全家都是7

【好冷】

仔細認真觀察完後我發現

emmm難不成我寫的3不標準?

直到我重新寫了個3

【歡呼聲】

好感動,識別成功了,此時我摸著高斯濾波的頭:這事真不怪你,這個3缺了個心眼都能識別出來,真不是你的問題

後來我又重新寫了好幾個3放過來檢測

100%正確率

計算機玄學。。

下次我們用影象分割識別手寫手機號

拜拜

ps:附上原始碼檔案

我的Tensorflow學習之路

最近兩年深度學習真的是火的不要不要的,關於深度學習,每個人都有自己的看法。有人說就是煉丹,得個準確率召回率什麼的,拿到實際中,問問為什麼,都答不上來。各種連 都沒寫過的人,也紛紛表示這東西就是小孩堆積木,然後整個大功耗的伺服器跑上幾天,調調引數。然後每個實驗室招生,都說自己是做什麼深度學習,機器 學...

tensorflow入門學習(五)

神經網路搭建的一般步驟 第一步 類別 我們把向量化後的x和權重矩陣w相乘,加上偏置b,然後計算每個分類的softmax概率值。predict tf.nn.softmax tf.matmul x,w b 第二步 計算損失 訓練過程指定最小化誤差用的損失函式 loss tf.reduce mean tf...

演算法工程師修仙之路 TensorFlow(五)

乙個最簡單的神經元結構的輸出就是所有輸入的加權和,而不同輸入的權重就是神經元的引數。神經網路的優化過程就是優化神經元中引數取值的過程。全連線神經網路是相鄰兩層之間任意兩個節點之間都有連線的神經網路結構。乙個簡單的判斷零件是否合格的三層全連線神經網路。第二個部分為神經網路的連線結構。最後乙個部分是每個...