以上次進行的例子(用 TensorFlow 架構CNN網路層 來做手寫數字辨識),我們是使用mnist提供的資料集來做訓練與預測,但是如果想將訓練及與測試集都換成自己準備的圖片,我們該怎麼做呢?
最直接的直觀懶惰的方式就是把圖片轉成跟mnist一樣啊!!
所以首先我們來看看mnist內圖片的樣子,
from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data', one_hot=True) print mnist.test.images[0]
簡單來說:
- 格式是numpy.array
- 大小是28 * 28
- 黑白圖像
- 一維陣列
所以根據這些,我射出以下方法:(圖片大小用動態的,未來便不會侷限在28*28的圖像)
def ResizeAndConToNumpyArray(pic,X_size,Y_size): gray = pic.convert('L') gray_rz = gray.resize((X_size,Y_size), Image.ANTIALIAS) np_gray= np.array(gray_rz,float) np_gray = np_gray.ravel() np_gray /= 255 return np_gray
然後再用迴圈建立新的numpy.array,內容為[圖像,答案],大概長的是下面這個樣子,
[
[[0…,0…..,0….],0],
[[0…,0…..,0….],1],
[[0…,0…..,0….],2],…..
]
然後為了免去一張一張圖對上答案後手動加入的麻煩,我建立了TraingData資料夾,裡面包跨0,1,2…..,9共10個資料夾,只要分類放好之後,之後會依照這個圖片分組方式進行訓練與預測。
訓練圖像的標準答案以資料夾名稱分類,預測結果為與哪個組別最為接近。
以下為成功圖:
訓練:
(匯入訓練用圖像 | 進行訓練與測試準度:使用10000張手寫圖片訓練後成功率到達86%)
預測:
訓練完後重複使用也沒有問題!
(打開圖像並進行預測 | 預測結果與信心指數(%))
這邊是本次結果的程式碼 github:https://github.com/Chunshan-Theta/CnnTemplate
您好想詢問一下
在traing.py檔案裡最後訓練參數的意義
NumberOfOneTraing
batch_xs, batch_ys = MP.batch(NumberOfOneTraing)
test_xs, test_ys = MP.batch()
這3行參數的關聯我搞不清楚 能否講解一下呢 謝謝
您好.方便請教您嗎
沒有問題 =) 這是我的郵箱:gavin19950511@gmail.com
有沒有全部的程式碼😂😂
不知道要如何把函數加入